自动化测试(pytest通过yaml文件来维护测试用例参数化,自动生成测试脚本)

简介: yaml读取用例title和用例参数:
#coding:utf-8fromcommon.configure_yamlimport*fromcommon.edit_type_dataimport*defget_testcase_params(file_name,case_type):
"""    该函数为测试用例yaml文件转换使用,任何测试用例都需要通过该函数重新组装数据类型    暂时为两种方式,一个是单校验,一个是双校验    单校验:params,check    双校验:params,set_check,get_check    必须严格按照格式编写yaml文件    :param file_name:    :param case_type:    :return:    """try:
case_data=get_case_yaml(file_name=file_name)["test_case_params"]  # 获取测试用例文件data_info=len(case_data[case_type])
# print(case_data[case_type])ifdata_info==3:#判断数量为3时默认存在cmd,params,checkdata=list(zip(case_data[case_type]["cmd"], case_data[case_type]["params"], case_data[case_type]["check"]))
elifdata_info==4:#判断数量为4时默认存在cmd,params,check,set_checkif"params_special"incase_data[case_type].keys():#如果包涵params_special则走这条data=list(zip(case_data[case_type]["cmd"], case_data[case_type]["params"],
case_data[case_type]["params_special"],
case_data[case_type]["check"]))
else:
data=list(zip(case_data[case_type]["cmd"], case_data[case_type]["params"], case_data[case_type]["set_check"],
case_data[case_type]["get_check"]))
elifdata_info==5:#判断数量为5的时候默认存在cmd,params,params_special,check,set,get_checkdata=list(zip(case_data[case_type]["cmd"], case_data[case_type]["params"], case_data[case_type]["params_special"],
case_data[case_type]["set_check"], case_data[case_type]["get_check"]))
elifdata_info==6:#判断数量为5的时候默认存在cmd,params,params_special,params_special2,check,set,get_checkdata=list(zip(case_data[case_type]["cmd"], case_data[case_type]["params"], case_data[case_type]["params_special"],
case_data[case_type]["params_special2"],case_data[case_type]["set_check"], case_data[case_type]["get_check"]))
else:
returnFalsereturndataexcept:
# print("请检查:"+case_type+"文件格式是否存在问题")return"请检查:"+case_type+"文件格式是否存在问题"defget_testcase_title(file_name):
case_title=get_case_yaml(file_name=file_name)  # 获取测试用例名文件#print(case_title)returncase_title#if __name__ == '__main__':#    robot_get_status_params = get_testcase_params(file_name="SDK/robot_joint/joint.yaml", case_type="test_robot_joint")#    case_title = get_testcase_title(file_name="SDK/robot_joint/joint.yaml")["robot_joint_title"]

python读取yaml数据

#coding:utf-8importyaml,jsonroute="D:/EC_auto_test/common/"case_route="D:/EC_auto_test/case_parameter/"#route = "/home/test/"#print(route)defget_yaml(file_name):
try:
yaml_path=open(route+"yaml_info/"+file_name,encoding="utf-8")
data=yaml.safe_load(stream=yaml_path)
print("文件名:",file_name)
print("文件内容:",data)
returndataexcept:
print("get_yaml函数查询的yaml文件名不存在")
defget_case_yaml(file_name):
try:
yaml_path=open(case_route+file_name,encoding="utf-8")
data=yaml.safe_load(stream=yaml_path)
print(yaml_path)
#print("文件名:",file_name)#print("文件内容:",data)returndataexcept:
print("get_yaml函数查询的yaml文件名不存在")
if__name__=='__main__':
#ip = get_yaml("common.yaml")["ip"]#port = get_yaml("common.yaml")["port"]#print(ip,port)case_parameters=get_case_yaml(file_name="SDK/robot_joint/joint.yaml")["title_case"]
print(case_parameters)

pytest装饰器参数化获取yaml参数

file_name_yaml="SDK/robot_paramservice/test.yaml"case_title=get_testcase_title(file_name=file_name_yaml)#获取测试用例名case_params=get_testcase_params(file_name=file_name_yaml,
case_type="robot_getRobotState_params")#获取测试用例参数@allure.story("测试用例名")
@pytest.mark.parametrize("case_params ,check",
getCurrentEncode_params,ids=case_title["test_title"])
deftest_robot_getRobotState(self,case_params,check,servo):
result=function(case_params)
assertresult==check

目录
相关文章
|
4月前
|
人工智能 测试技术 调度
写用例写到怀疑人生?AI 智能测试平台帮你一键生成!
霍格沃兹测试开发学社推出AI智能测试用例生成功能,结合需求文档一键生成高质量测试用例,大幅提升效率,减少重复劳动。支持自定义提示词、多文档分析与批量管理,助力测试人员高效完成测试设计,释放更多时间投入核心分析工作。平台已开放内测,欢迎体验!
|
3月前
|
人工智能 自然语言处理 测试技术
让AI帮你跑用例-重复执行,不该成为测试工程师的主旋律
测试不该止步于重复执行。测吧科技推出用例自动执行智能体,通过AI理解自然语言用例,动态规划路径、自主操作工具、自动重试并生成报告,让测试工程师从“点点点”中解放,专注质量思考与创新,提升效率3倍以上,节约人力超50%,重构测试生产力。
|
7月前
|
测试技术 Python
Python测试报告生成:整合错误截图,重复用例执行策略,调整测试顺序及多断言机制。
如何组织这一切呢?你可以写一本名为“Python测试之道”的动作指南手册,或者创建一个包含测试策略、测试顺序、多断言机制的脚本库。只要你的测试剧本编写得足够独到,你的框架就会像一位执行任务的超级英雄,将任何潜伏于代码深处的错误无情地揪出来展现在光天化日之下。这些整理好的测试结果,不仅有利于团队协作,更像冒险故事中的精彩篇章,带给读者无尽的探索乐趣和深刻的思考。
184 10
|
12月前
|
前端开发 JavaScript 测试技术
使用ChatGPT生成登录产品代码的测试用例和测试脚本
使用ChatGPT生成登录产品代码的测试用例和测试脚本
363 35
|
存储 测试技术 API
pytest接口自动化测试框架搭建
通过上述步骤,我们成功搭建了一个基于 `pytest`的接口自动化测试框架。这个框架具备良好的扩展性和可维护性,能够高效地管理和执行API测试。通过封装HTTP请求逻辑、使用 `conftest.py`定义共享资源和前置条件,并利用 `pytest.ini`进行配置管理,可以大幅提高测试的自动化程度和执行效率。希望本文能为您的测试工作提供实用的指导和帮助。
1468 15
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
1328 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
715 2
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
415 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
|
测试技术 数据安全/隐私保护
北邮人论坛登录页面测试用例
北邮人论坛登录页面测试用例
267 1
参数化测试
参数化测试
244 0