欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 使用python反射,实现pytest读取yaml并发送请求

使用python反射,实现pytest读取yaml并发送请求

2025/5/5 16:19:37 来源:https://blog.csdn.net/qq_33181292/article/details/146300030  浏览:    关键词:使用python反射,实现pytest读取yaml并发送请求

pytest + yaml

yaml

- feature: 用户模块story: 登录title: 添加用户request:method: POSTurl: /system/user/listheaders: nullparams: nullvalidate: null

read_yaml_all

def read_yaml_all(path):with open(path, 'r', encoding='utf-8') as f:value = yaml.safe_load(f)return value

dataclass.py

from dataclasses import dataclass@dataclass
class CaseInfo:feature: strstory: strtitle: strrequest: dictvalidate: dictdef verify_yaml(case_info: dict):"""通过解包的方式,校验yaml格式是否正确:param case_info::return:"""try:case = CaseInfo(**case_info)return caseexcept Exception:raise Exception("YAML测试用例不符合规范!")

test_yaml_class.py


from pathlib import Pathimport pytestfrom lib import read_yaml_all, verify_yamlclass TestYamlCases:passdef create_case_by_yaml(yaml_path):# 读取yaml@pytest.mark.parametrize('case', read_yaml_all(yaml_path))def yaml_function(self, session, case):""":param self: TestYamlCases类对象:param session: 夹具:param case: 参数化:return:"""# 校验yaml格式是否与数据类字段一致case_info = verify_yaml(case)# 发送请求session.request(**case_info.request)# return方法与def平级,切记return yaml_functiontest_case_yaml_paths = Path(__file__).parent
case_yaml_list = test_case_yaml_paths.glob("**/*.yaml")for yaml_file in case_yaml_list:print(yaml_file)print(yaml_file.stem)# python 反射,通过反射的方式将pytest的测试用例传入TestYamlCases中setattr(TestYamlCases, "test_" + yaml_file.stem, create_case_by_yaml(yaml_file))

成功

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词