根据B站视频进行实操整理的一些关于pytest学习笔记~

一、pytest测试用例的运行方式

1、主函数模式

  • 运行所有用例:执行pytest.main()

参数详解:

-s:表示输出调试信息,包括print打印的信息

-v表示详细的信息,一般以“-vs”使用

-n支持分布式运行或多线程运行测试用例如下图所示

--reruns num :表示失败用例重跑例如pytest.main(['-vs','./testcase','-n=2'])

-x表示只要有一个用例报错,那么测试停止

--maxfail=2出现2个用例失败就停止

  • 指定模块运行如下图:

  • 指定文件夹运行如下图:

  • 通过nodeid制定用例运行:nodeid由模块名,分隔符::,类名,方法名,函数名组成,

指定函数:pytest_main(['-vs','./interface_testcase/test_interface.py::test_04_func'])

指定方法:pytest_main(['-vs','./interface_testcase/test_interface.py::TestInterface::test_03_bianggan'])

指定函数运行如下图:

2、命令行模式

  • 运行所有用例:在终端输入pytest命令

-s:表示输出调试信息,包括print打印的信息

-v表示详细的信息,一般以“-vs”使用

-n支持分布式运行或多线程运行测试用例如: pytest -vs ./testcase -n 2,使用到的插件为pytest-xdist,示例图如下:

--reruns num 表示失败用例重跑例如pytest -vs ./testcase --reruns 2,使用到的插件是pytest-rerunfailures

-x表示只要有一个用例报错,那么测试停止(运用较少)

--maxfail 2出现2个用例失败就停止(运用较少)

-k根据测试用例的部分字符串指定用例(运用较少),例如:pytest -vs ./testcase -k "ao"

  • 指定模块运行切换到测试用例的目录路径下在终端执行pytest -vs test_login.py,如下图:

3、通过读取pytest.ini配置文件运行(企业中最常用)

pytest.ini是一个手动创建的配置文件,用于读取整个项目的配置信息,pytest将按此配置文件中指定的方式去运行,并可以改变pytest的默认行为。pytest.ini配置文件存放在项目的根目录,文件名称固定不可修改。文件内容如下:

[pytest]

addopts = -vs --html ./report/report.html         #命令行的参数,用空格分隔

testpaths = ./testcase                                     #测试用例的路径

python_feil = test_*.py                                   #模块名的规则

python_classes = Test*                                 #类名的规则

python_functions = test                                 #方法名的规则

二、pytest执行测试用例顺序

  • unitest: 按照ASCII码的大小来绝对的执行顺序自行
  • pytest: 默认按照从上向下的执行顺序,改变默认的执行顺序:使用mark标记, 标记测试用例执行顺序,例如:@pytest.mark.run(order=1),1代表第一个执行,2代表第二个执行,使用到的插件为pytest-ordering 

三、分组执行(冒烟、分模块执行、分接口执行)     

  • 在pytest.ini文件中增加markers,即增加分组:

[pytest]

addopts = -vs --html ./report/report.html         #命令行的参数,用空格分隔

testpaths = ./testcase                                     #测试用例的路径

python_feil = test_*.py                                   #模块名的规则

python_classes = Test*                                 #类名的规则

python_functions = test                                 #方法名的规则

markers =                                                      #分组

        smoke:冒烟用例

        usermanage:用户管理模块

        productmanage:商品管理模块

  • 在用例前增加标记例如@pytest.mark.smoke或@pytest.mark.usermanage
  • 在终端输入pytest -vs -m "smoke or usermanage"

四、pytest跳过测试用例

  • 有条件跳过(在用例前面加上@pytest.mark.skipif(age>=18,reason = '已成年'))

  • 无条件跳过(在用例前面加上@pytest.mark.skip)
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐