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")
目录
相关文章
|
3月前
|
存储 设计模式 测试技术
怎么基于Pytest+Requests+Allure实现接口自动化测试?
该文介绍了一个基于Python的自动化测试框架,主要由pytest、requests和allure构成,采用关键字驱动模式。项目结构分为六层:工具层(api_keyword)封装了如get、post的请求;参数层(params)存储公共参数;用例层(case)包含测试用例;数据驱动层(data_driver)处理数据;数据层(data)提供数据;逻辑层(logic)实现用例逻辑。代码示例展示了如何使用allure装饰器增强测试报告,以及如何使用yaml文件进行数据驱动。
|
7天前
|
SQL JavaScript 前端开发
基于Python访问Hive的pytest测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Python、来开发Hive应用的方法,产生的代码如下
26 6
基于Python访问Hive的pytest测试代码实现
|
8天前
|
测试技术
软件测试用例设计之微信群抢红包经典用例
作者在浏览招聘网站时遇到为微信群发和抢红包设计测试用例的问题,作为软件测试新手,作者通过实际体验并撰写测试案例来加深对业务的理解,并分享了测试案例表格。需要注意的是,该用例未考虑添加银行卡支付、红包类型选择及红包描述。
22 5
软件测试用例设计之微信群抢红包经典用例
|
4月前
|
NoSQL 安全 测试技术
接口测试用例设计的关键步骤与技巧解析
该文介绍了接口测试的设计和实施,包括测试流程、质量目标和用例设计方法。接口测试在需求分析后进行,关注功能、性能、安全等六项质量目标。流程包括网络监听(如TcpDump, WireShark)和代理工具(Charles, BurpSuite, mitmproxy, Fiddler, AnyProxy)。设计用例时,需考虑基本功能流程、输入域测试(如边界值、特殊字符、参数类型、组合参数、幂等性)、线程安全(并发和分布式测试)以及故障注入。接口测试用例要素包括模块、标题、优先级、前置条件、请求方法等。文章强调了保证接口的幂等性和系统健壮性的测试重要性。
158 5
|
1天前
|
测试技术
基于LangChain手工测试用例转App自动化测试生成工具
在传统App自动化测试中,测试工程师需手动将功能测试用例转化为自动化用例。市面上多数产品通过录制操作生成测试用例,但可维护性差。本文探讨了利用大模型直接生成自动化测试用例的可能性,介绍了如何使用LangChain将功能测试用例转换为App自动化测试用例,大幅节省人力与资源。通过封装App底层工具并与大模型结合,记录执行步骤并生成自动化测试代码,最终实现高效自动化的测试流程。
11 4
|
1月前
|
前端开发 关系型数据库 测试技术
django集成pytest进行自动化单元测试实战
在Django项目中集成Pytest进行单元测试可以提高测试的灵活性和效率,相比于Django自带的测试框架,Pytest提供了更为丰富和强大的测试功能。本文通过一个实际项目ishareblog介绍django集成pytest进行自动化单元测试实战。
26 3
django集成pytest进行自动化单元测试实战
|
22天前
|
测试技术
基于LangChain手工测试用例转Web自动化测试生成工具
该方案探索了利用大模型自动生成Web自动化测试用例的方法,替代传统的手动编写或录制方式。通过清晰定义功能测试步骤,结合LangChain的Agent和工具包,实现了从功能测试到自动化测试的转换,极大提升了效率。不仅减少了人工干预,还提高了测试用例的可维护性和实用性。
31 4
|
1月前
|
人工智能 自然语言处理 测试技术
基于LangChain手工测试用例转接口自动化测试生成工具
本文介绍利用大语言模型自动生成接口自动化测试用例的方法。首先展示传统通过HAR文件生成测试用例的方式及其局限性,随后提出结合自然语言描述的测试需求与HAR文件来生成更全面的测试脚本。通过LangChain框架,设计特定的提示词模板,使模型能够解析测试需求文档和HAR文件中的接口信息,并据此生成Python pytest测试脚本。示例展示了正常请求、非法请求及无效路径三种测试场景的自动化脚本生成过程。最终,整合流程形成完整代码实现,帮助读者理解如何利用大模型提高测试效率和质量。
75 2
|
1月前
|
存储 测试技术 API
apifox实例应用-自动化测试用例for循环的使用
总结来说,通过在Apifox自动化测试用例中结合for循环的使用,我们可以有效地对接口进行批量测试,提升测试效率和覆盖率。同时,通过参数化测试数据的灵活应用,能够确保我们的接口在不同的输入条件下都能保持正确的行为。这种方法能够显著减少手动测试工作量,同时通过标准化的流程确保测试的一致性。
62 0
|
2月前
|
Shell Python
`pytest-httpserver`是一个pytest插件,它允许你在测试期间启动一个轻量级的HTTP服务器,并模拟HTTP请求和响应。
`pytest-httpserver`是一个pytest插件,它允许你在测试期间启动一个轻量级的HTTP服务器,并模拟HTTP请求和响应。