from xToolkit import xfiletest_data = xfile.read("读取的excel文件路径").excel_to_dict(sheet=1) # 数据驱动只须要一行代码
问题2:如何发送http要求
借助requests库中的ruquest方法
def excute(url, method, params, data): re = requests.request( url=url, method=method, params=params, data=data )
问题3:如何将读取到的数据放入到读取到的参数里面呢?借助pytest中的@pytest.mark.parametrize() 数据驱动装饰器学习:学的是利用办法,至少在这个阶段 1、被这个东西润色的函数,会自动循环实行 2、循环的次数,由列表的长度决定。 3、自动解析列表,每次循环把列表元素拿出来
import requestsimport pytest@pytest.mark.parametrize("case_info", test_data)def test_excute(case_info): re = requests.request( url=case_info["url"], method=case_info["method"], params=case_info["params"], data=case_info["data"] )
问题4:接口有关联,怎么处理
import requestsimport pytest@pytest.mark.parametrize("case_info", test_data)def test_excute(case_info): re = requests.request( url=case_info["url"], method=case_info["method"], params=case_info["params"], data=case_info["data"] ) print(re.text) # 判断是不是须要我提取提取返回值的参数 if case_info["提取参数"]: var = jsonpath.jsonpath(re.json(), "$.." + case_info["提取参数"]) dict[case_info["提取参数"]] = var[0]
如果在须要的 更换 从其他接口提取到的值
from string import Templateglobal_var = {"token": "dsdajhfgjsadgfsdj2d1d3f42g"}url = "https://www.baidu.com/index.php?token=${token}"print(url)url = Template(url).substitute(global_var)print(url)# 输出:https://www.baidu.com/index.php?token=${token}https://www.baidu.com/index.php?token=dsdajhfgjsadgfsdj2d1d3f42g
终极代码

import requestsimport pytestimport jsonpathfrom string import Templatefrom xToolkit import xfiletest_data = xfile.read("读取的excel文件路径").excel_to_dict(sheet=1) # 数据驱动只须要一行代码dic = {}@pytest.mark.parametrize("case_info", test_data)def test_excute(case_info): url = case_info["url"] if "$" in url: url = Template(url).substitute(dic) re = requests.request( url=url, method=case_info["method"], params=case_info["params"], data=case_info["data"] ) print(re.text) # 判断是不是须要我提取提取返回值的参数 if case_info["提取参数"]: var = jsonpath.jsonpath(re.json(), "$.." + case_info["提取参数"]) dic[case_info["提取参数"]] = var[0]