用例标签及运行

当测试用例比较多的时候,只想运行其中的一个或多个时可以通过标签标记测试用例,然后执行的时候通过标签筛选而指定运行。

如下通过@pytest.mark.标签名标记用例,运行时通过 “-m 标签名”:

pytest 动态传入列表参数 pytest 命令行参数_pytest


一共3个测试用例,只执行了test_one,剩下两个未选定而没有执行,虽然执行成功了,但是会发出警告提示标签未注册,注册标签可以写在配置文件pytest.ini中,如下:

pytest 动态传入列表参数 pytest 命令行参数_pytest_02


再次执行,结果如下:

pytest 动态传入列表参数 pytest 命令行参数_用例_03


标记整个类:此时会运行此类下的所有测试用例

pytest 动态传入列表参数 pytest 命令行参数_测试框架_04


标记组合,如下每个测试函数都加了标记,运行时可以通过and、or、not来运行用例

pytest.ini配置内容如下:

pytest 动态传入列表参数 pytest 命令行参数_用例_05


测试用例加上标签:

pytest 动态传入列表参数 pytest 命令行参数_用例_06


and:同时具备两个标签,如下只运行了test_two

pytest 动态传入列表参数 pytest 命令行参数_pytest_07


or:满足一个标签即可

pytest 动态传入列表参数 pytest 命令行参数_pytest 动态传入列表参数_08


not:如下运行非f的标签用例

pytest 动态传入列表参数 pytest 命令行参数_测试框架_09


命令行参数

pytest 提供了很多可供我们执行用例的命令行参数,通过下面例子简单的介绍几个:

pytest 动态传入列表参数 pytest 命令行参数_pytest_10


通过pytest.main()命令运行,以列表的格式传入-v:输出用例更加详细的执行信息,比如用例所在的文件及用例名称等

pytest 动态传入列表参数 pytest 命令行参数_pytest 动态传入列表参数_11


-q:作用与-v相反,简化输出信息,.代表用例通过,F代表失败

pytest 动态传入列表参数 pytest 命令行参数_pytest 动态传入列表参数_12

-m:-m ”标签名“,执行特定的测试用例(上面已经介绍过)

-k: -k “关键字”,执行用例包含“关键字”的用例,类似于-m

pytest 动态传入列表参数 pytest 命令行参数_测试框架_13


-s:输出我们用例中的调式信息,比如print的打印信息等

pytest 动态传入列表参数 pytest 命令行参数_测试框架_14


-x: 遇到错误或者用例不通过,则退出执行,如下三个用例,执行到第二个时用例未通过,则退出执行,test_demo2未被执行。

pytest 动态传入列表参数 pytest 命令行参数_用例_15


–maxfail=num:类似-x,不同的是—maxfail可以指定执行失败的次数,例–maxfail=3,则执行时遇到3次失败则退出执行:

pytest 动态传入列表参数 pytest 命令行参数_python_16


此时失败用例只有一个,所以不会影响后面的用例执行,如果—maxfail=1,此时与-x的功能是一样的。

多个参数也可以同时运行,如下:

pytest.main(['-s','-v','--maxfail=1','-m smoke'])