第七种:自定义执行内容
2026/6/13 15:50:52 网站建设 项目流程
1.项目实操中,只需要执行部分用例,而又不想改变测试运行的主逻辑1.1.这时就可以使用 pytest 的标记运行来过滤

一.注册标记

1.在项目根目录下创建pytest.ini文件用来定义注册标记
[pytest]markers=success:marks success tests fail login invest first
2.定义了success、fail、login、invest四个标记,冒号后面是标记的注释内容,可省略

二.标记测试

1.标记方法
1.1.在要标记的测试方法上应用装饰器
@pytest.mark.mark_namedefsome_test_function():pass

1.2.运行:在main.py入口文件中,增加-m参数

2.标记测试类
2.1.与标记方法一致,在要标记的类定义语句上方应用装饰器
@pytest.mark.mark_nameclassTestClass():pass

2.2.运行方式与运行标记的测试方法一致,通过-m 指定运行的标记名
3.标记测试模块
3.1.标记模块需要在模块顶部创建全局变量 pytestmark
importpytest pytestmark=pytest.mark.mark_name# 或者多个标记# pytestmark = [pytest.mark.mark_name1, pytest.mark.mark_name2]

4.分开标记参数化的用例
4.1.将指定数据定义为标记
4.1.1.写法一
importpytest success_cases[0]=pytest.param(success_cases[0],marks=pytest.mark.first)

4.1.2.写法二
importpytest# 正向用例success_cases=[pytest.param({'title':"登录成功-不记住账号密码",'request_data':{"username":"admin","password":"Admin@123","remember":False}},marks=pytest.mark.first),{'title':"登录成功-记住账号密码",'request_data':{"username":"admin","password":"Admin@123","remember":True}}]

三.运行指定标记

1.当使用自定义的标记对测试做好标记后,在pytest命令中使用-m 参数即可选择指定的标记运行
#命令行模式pytest-v-m success# 多个标记可以用 and or进行组合pytest-v-m"mark1 and mark2"# 选取同时被mark1和mark2标记的测试pytest-v-m"mark1 or mark2"# 选取被mark1或mark2标记的测试#主函数模式if__name__=='__main__':pytest.main(['-vs','-m=smoke or product'])

四.通过命令行动态指定标记

1.在实际运行项目时,需要根据测试任务的不同,需要在命令行使用-m 参数动态执行对应的用例,所以需要能够动态的接收命令行参数

2.获取传入的命令行参数

2.1.在common文件夹下新建tools.py文件,来获取传入的命令行参数
importsysdefget_opts(name):''' 获取传入的命令行参数 :param name: :return: '''args=sys.argv[1:]# 如果命令行中参数名有多个值,则需要使用""进行包裹# 如 -m "success and login"ifnameinargs:returnargs[args.index(name)+1]if__name__=='__main__':# 可返回命令行的参数res=sys.argvprint(res)
3.定义入口函数
3.1.修改入口函数处代码,让其动态获得参数信息,并执行代码,修改后内容
importpytestimportsettingsfromcommon.toolsimportget_optsif__name__=='__main__':# pytest.main(['-s','-v','-m success','--alluredir=./reports', settings.TEST_CASE_DIR])# 定义传入的参数信息args=['-s','-v','--alluredir=./reports',settings.TEST_CASE_DIR]# 获取命令行-m参数的值arg=get_opts('-m')# 若-m参数不为空,则将参数和参数值传入参数信息中ifarg:args.insert(0,'-m {}'.format(arg))# 运行代码并生成测试报告pytest.main(args)
4.部分报错调整
4.1.当指定执行fail标记的用例时,可能存在报错部分,如投资用例

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询