单元测试参数化之Json格式

什么是JSON?

概念:一种轻量级数据交换格式;后缀名 .json
提示:
    接口测试一般使用JSON为接口传递数据规范格式,所以我们有必要对如何获取JSON数据做个了解;   

1、JSON格式

格式:{"name":"张三","age":28}
提示:由键值对组成,健名和值之间使用分号(:)分割,多个键值对之间使用逗号(,)分割

2、使用JSON实现三角形案例参数化-操作步骤

1. 编写JSON文件
2. 编写JSON读取模块函数
3. 单元测试-引用JSON读取函数
4. 执行

3、难点分析

1. 导入JSON包(import JSON)
2. 打开JSON文件并解析
    with open('../DataXML/sjx.json','r',encoding='utf-8') as f:
        file=json.load(f)

4、代码

(1)三角形判断类:sjx.py

class Sjx():
    def sjx(self,a,b,c):
        # 判断是否为三角形
        if a+b>c and a+c>b and b+c>a:
            # 判断是否为等边三角形
            if a==b and b==c:
                return "等边三角形"
            elif a==b or a==c or b==c:
                return "等腰三角形"
            else:
                return "普通三角形"
        else:
            return "不是三角形"

(2)json数据文件:sjx.json

{
  "data":
         [
           {"b1":2,"b2":2,"b3":3,"expect":"等腰三角形"},
           {"b1":2,"b2":2,"b3":2,"expect":"等边三角形"},
           {"b1":2,"b2":3,"b3":2,"expect":"等腰三角形"}
         ]
}

 (3)读取json数据类:read_json.py

# 导包 json
import json
# 打开文件流
class Read_Json():
    def readJson(self):
        with open("../data/sjx.json","r",encoding="utf-8") as f:
            # 调用load()
            datas=json.load(f)
            # 返回字典data键名对应的值
            return datas["data"]

if __name__ == '__main__':
    print(Read_Json().readJson())

(4)测试类test_json.py


#导入unittest、三角形函数、json读取类
import unittest
from Unittest.code.sjx import Sjx
from Unittest.read_data.read_json import Read_Json

#实例化三角形
sjxClass=Sjx()
#实例化读取csv工具
readJsonClass=Read_Json()
class Test_Json(unittest.TestCase):
    #测试三角形函数程序
    def test1(self):
        for i in range(len(readJsonClass.readJson())):
            result=sjxClass.sjx(int(readJsonClass.readJson()[i]["b1"]),
                                int(readJsonClass.readJson()[i]["b2"]),
                                int(readJsonClass.readJson()[i]["b3"]))
            self.assertEqual(result,readJsonClass.readJson()[i]["expect"])
            print(readJsonClass.readJson()[i]["b1"],
                  readJsonClass.readJson()[i]["b2"],
                  readJsonClass.readJson()[i]["b3"],
                  readJsonClass.readJson()[i][ "expect"],
                  "-->验证通过")

运行结果:

Launching Nosetest with arguments D:\Program Files\PyCharm\PyCharm 2017.2.3\helpers\pycharm\_jb_nosetest_runner.py E:/pythonProject/Unittest/unittest/test_json.py in E:\pythonProject\Unittest\unittest
2 2 3 等腰三角形 -->验证通过
2 2 2 等边三角形 -->验证通过
2 3 2 等腰三角形 -->验证通过
.
----------------------------------------------------------------------
Ran 1 test in 0.004s

OK
发布了240 篇原创文章 · 获赞 77 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/dpl12/article/details/104228291