我们之前写的把url,登录都封装了,但是用例的数据怎么用其他文件管理起来,和代码分离呢?由次,我就行了json进行用例的管理。
从接口的角度我们分析,我们都知道接口请求有以下几方面:
url
method
headers
data
由次我将我的用例管理格式设置成下面的
{
"url": "/login",
"method": "GET",
"headers":
{"Content-Type":"application/x-www-form-urlencoded"},
"casedata":
[
[{"caseNo": "01"},{"caseName": "正常登录"},{"reqParam": {"username":"admin","password":"123456"}}],
[{"caseNo": "02"},{"caseName": "登录-用户名错误"},{"reqParam": {"username":"admin111","password":"123456"}}],
[{"caseNo": "03"},{"caseName": "登录-密码错误"},{"reqParam": {"username":"admin","password":"123456111"}}]
]
}
下来就是怎么读取json文件,为此我写了个方法单独读取json文件,代码如下:
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/01
# @Author : Laopi
import json
def read_json_file(file_path):
with open(file_path, 'r',encoding='utf-8') as file:
data = json.load(file)
return data
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/01
# @Author : laopi
import requests
from config.read_json_file import read_json_file
from config.setting import ConfigHandler
from tools.yamlControl import GetYamlData
baseUrl = GetYamlData(ConfigHandler.config_path).get_yaml_data()
url = baseUrl['host']+"/login"
jsonpath = (ConfigHandler.root_path+'/testdata/login.json')
# 读取JSON文件
headers = read_json_file(jsonpath)['headers']
data = read_json_file(jsonpath)['casedata'][0][2]['reqParam']
print(data)
# headers = GetYamlData(ConfigHandler.root_path+'/testdata/login.yaml').get_yaml_data()['headers']
# data=GetYamlData(ConfigHandler.root_path+'/testdata/login.yaml').get_yaml_data()['data']
# print(headers)
response = requests.post(url=url,
headers=headers,
data=data)
print(response.text)
如果想要执行异常的第二个用例只需要把
data = read_json_file(jsonpath)['casedata'][0][2]['reqParam']
修改为
data = read_json_file(jsonpath)['casedata'][1][2]['reqParam']
整体代码如下:
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/01
# @Author : laopi
import requests
from config.read_json_file import read_json_file
from config.setting import ConfigHandler
from tools.yamlControl import GetYamlData
baseUrl = GetYamlData(ConfigHandler.config_path).get_yaml_data()
url = baseUrl['host']+"/login"
jsonpath = (ConfigHandler.root_path+'/testdata/login.json')
# 读取JSON文件
headers = read_json_file(jsonpath)['headers']
data = read_json_file(jsonpath)['casedata'][1][2]['reqParam']
print(data)
# headers = GetYamlData(ConfigHandler.root_path+'/testdata/login.yaml').get_yaml_data()['headers']
# data=GetYamlData(ConfigHandler.root_path+'/testdata/login.yaml').get_yaml_data()['data']
# print(headers)
response = requests.post(url=url,
headers=headers,
data=data)
print(response.text)
运行结果如下:
同样第三条用例,就把
data = read_json_file(jsonpath)['casedata'][1][2]['reqParam']
修改为
data = read_json_file(jsonpath)['casedata'][2][2]['reqParam']
整体代码如下:
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/01
# @Author : laopi
import requests
from config.read_json_file import read_json_file
from config.setting import ConfigHandler
from tools.yamlControl import GetYamlData
baseUrl = GetYamlData(ConfigHandler.config_path).get_yaml_data()
url = baseUrl['host']+"/login"
jsonpath = (ConfigHandler.root_path+'/testdata/login.json')
# 读取JSON文件
headers = read_json_file(jsonpath)['headers']
data = read_json_file(jsonpath)['casedata'][2][2]['reqParam']
print(data)
# headers = GetYamlData(ConfigHandler.root_path+'/testdata/login.yaml').get_yaml_data()['headers']
# data=GetYamlData(ConfigHandler.root_path+'/testdata/login.yaml').get_yaml_data()['data']
# print(headers)
response = requests.post(url=url,
headers=headers,
data=data)
print(response.text)
运行结果如下: