pytest二位元组方式获取测试用例

简介: 二次封装测试用例读取方式
#coding:utf-8fromcommon.yaml_info.configure_yamlimport*fromcommon.robot_methodimport*defget_testcase_params(file_name,case_type):
"""    该函数为测试用例yaml文件转换使用,任何测试用例都需要通过该函数重新组装数据类型    暂时为两种方式,一个是单校验,一个是双校验    单校验:params,check    双校验:params,set_check,get_check    必须严格按照格式编写yaml文件    :param file_name:    :param case_type:    :return:    """try:
robot_type="6"+socket_fuction.send_cmd_with_retvalue(cmd="getRobotSubtype")["result"]#前方拼接6因为读取到的数据是只有型号#print(robot_type)try:
case_data=get_case_yaml(file_name=file_name)["test_case_params"]  # 获取测试用例文件print(case_data)
try:#如果用例中有包含title则使用63/66/612专用用例ifrobot_type=="63"orrobot_type=="612":
try:
case_type_data=case_data[case_type][robot_type]
data_info=len(case_data[case_type][robot_type])
except:
case_type_data=case_data[case_type]["default"]
data_info=len(case_data[case_type]["default"])
else:#66默认使用defaultcase_type_data=case_data[case_type]["default"]
data_info=len(case_data[case_type]["default"])
except:#反之则使用通用用例,通用用例中不需要补充63/66/612case_type_data=case_data[case_type]
data_info=len(case_data[case_type])
ifdata_info==3:#判断数量为3时默认存在cmd,params,checkdata=list(zip(case_type_data["cmd"],
case_type_data["params"],
case_type_data["check"]))
elifdata_info==4:#判断数量为4时默认存在cmd,params,check,set_checkif"params_special"incase_type_data.keys():#如果包涵params_special则走这条data=list(zip(case_type_data["cmd"],
case_type_data["params"],
case_type_data["params_special"],
case_type_data["check"]))
else:
data=list(zip(case_type_data["cmd"],
case_type_data["params"],
case_type_data["set_check"],
case_type_data["get_check"]))
elifdata_info==5:#判断数量为5的时候默认存在cmd,params,params_special,check,set,get_checkdata=list(zip(case_type_data["cmd"],
case_type_data["params"],
case_type_data["params_special"],
case_type_data["set_check"],
case_type_data["get_check"]))
elifdata_info==6:#判断数量为5的时候默认存在cmd,params,params_special,params_special2,check,set,get_checkdata=list(zip(case_type_data["cmd"],
case_type_data["params"],
case_type_data["params_special"],
case_type_data["params_special2"],
case_type_data["set_check"],
case_type_data["get_check"]))
elifdata_info==7:#判断数量为7的时候默认存在cmd,params,params_special,params_special2,params_sepcial2,check,set_check,get_checkif"special_check"incase_type_data.keys():
data=list(zip(case_type_data["cmd"],
case_type_data["params"],
case_type_data["params_special"],
case_type_data["params_special2"],
case_type_data["set_check"],
case_type_data["get_check"],
case_type_data["special_check"]))
else:
data=list(zip(case_type_data["cmd"],
case_type_data["params"],
case_type_data["params_special"],
case_type_data["params_special2"],
case_type_data["params_special3"],
case_type_data["set_check"],
case_type_data["get_check"]))
else:
returnFalsereturndataexcept:
# print("请检查:"+case_type+"文件格式是否存在问题")return"请检查params:"+case_type+"文件格式是否存在问题"exceptExceptionase:
print(e)
print("SDK机器人类型数据无法读取到,终止自动化")
defget_testcase_title(file_name,case_type):
try:
robot_type="6"+socket_fuction.send_cmd_with_retvalue(cmd="getRobotSubtype")["result"]#前方拼接6因为读取到的数据是只有型号print(robot_type)
try:
data_info=get_case_yaml(file_name=file_name)["test_case_title"]
try:#如果用例中有包含title则使用63/66/612专用用例ifrobot_type=="63"orrobot_type=="612":
try:
print(data_info[case_type][robot_type])
title_data=data_info[case_type][robot_type]
#case_info = data_info[case_type]print(title_data)
except:
title_data=data_info[case_type]["default"]
#case_info = data_info[case_type]print(title_data)
else:
title_data=data_info[case_type]["default"]
# case_info = data_info[case_type]print(title_data)
returntitle_dataexcept:
title_data=data_info[case_type]
# case_info = data_info[case_type]print(title_data)
except:
# print("请检查:"+case_type+"文件格式是否存在问题")return"请检查title:"+case_type+"文件格式是否存在问题"exceptExceptionase:
print(e)
print("SDK机器人类型数据无法读取到,终止自动化")
#def get_testcase_title(file_name):#    case_title = get_case_yaml(file_name=file_name)  # 获取测试用例名文件#    #print(case_title)#    return case_titleif__name__=='__main__':
#robot_get_status_params = get_testcase_params(file_name="SDK/robot_ttservice/ttservice.yaml", case_type="robot_tt_params")#print(robot_get_status_params)case_title=get_testcase_title(file_name="SDK/robot_movenmentservice/movenmentservice_II.yaml",case_type="robot_move_by_rotate_title")
目录
相关文章
|
2天前
|
测试技术
包含用例执行时间的测试报告代码
包含用例执行时间的测试报告代码
|
2天前
|
数据可视化 测试技术 持续交付
自动化测试神器:Python之Pytest库入门使用
自动化测试神器:Python之Pytest库入门使用
105 4
|
2天前
|
安全 数据可视化 前端开发
【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(2)· 正交表 · 场景设计 · 常见案例练习
【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(2)· 正交表 · 场景设计 · 常见案例练习
12 0
|
2天前
|
人工智能 测试技术 数据处理
【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(1)等价类划分法、边界值法、判定表法
【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(1)等价类划分法、边界值法、判定表法
6 0
|
2天前
|
测试技术 iOS开发
pytest Mark标记测试用例
使用`pytest.mark`进行测试用例分组和筛选,如`@pytest.mark.webtest`。通过`pytest -m`参数执行特定标记的用例,例如`pytest -s test_command_param.py -m webtest`。同时,pytest支持内置的skip、skipif和xfail功能来管理特殊用例:skip始终跳过,skipif条件满足时跳过,xfail则标记预期失败的测试。
5 0
|
2天前
|
jenkins 测试技术 持续交付
Pytest测试框架
Pytest是一个功能强大的测试框架,支持单元测试和复杂功能测试,可结合Requests和Selenium等进行接口和自动化测试。它拥有超过315个插件,兼容unittest,并能与Allure、Jenkins集成实现持续集成。安装可通过pip或Pycharm。Pytest遵循特定命名规则,测试用例由名称、步骤和断言组成。断言用于验证预期结果,当失败时程序会终止。Pytest提供setup/teardown机制来管理测试前后的资源。
15 3
|
2天前
|
测试技术 Python
python编写集成测试用例
【4月更文挑战第21天】
21 1
|
2天前
|
测试技术 数据库 UED
【白盒测试】单元测试的理论基础及用例设计技术(6种)详解
【白盒测试】单元测试的理论基础及用例设计技术(6种)详解
12 1
|
2天前
|
前端开发 测试技术 C++
Python自动化测试面试:unittest、pytest与Selenium详解
【4月更文挑战第19天】本文聚焦Python自动化测试面试,重点讨论unittest、pytest和Selenium三大框架。unittest涉及断言、TestSuite和覆盖率报告;易错点包括测试代码冗余和异常处理。pytest涵盖fixtures、参数化测试和插件系统,要注意避免过度依赖unittest特性。Selenium的核心是WebDriver操作、等待策略和测试报告生成,强调智能等待和元素定位策略。掌握这些关键点将有助于提升面试表现。
29 0
|
2天前
|
运维 测试技术
实用指南:使用Pytest Allure测试框架添加用例失败截图
本文介绍了如何在使用`allure+pytest`进行软件测试时,通过`pytest_runtest_makereport`钩子函数自动捕获失败用例的截图。在`conftest.py`中定义钩子,当用例失败时,保存截图并附加到Allure测试报告中。测试代码示例展示了登录豆瓣的场景,测试失败时会自动生成截图。这种方法有助于快速理解和解决测试问题,提升测试效率和软件质量。
19 0

热门文章

最新文章