什么是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