1、Pytest 中标记用例
- 接参数 -k 来挑选要执行的测试项
- pytest -k test_szdcs -s
- test_szdcs 为函数名称
- -k 后面接的名称可以为函数名称、类名称、文件名称、目录名称
- 区分大小写
- 支持模糊匹配
- 可以用 not 表示选择用例名称中不包含哪些内容,如下
- pytest -k test_szdcs -s
class Test01(): def test_szdcs(self): print("深圳多测师") def test_gzdcs(self): print("广州多测师") class Test02(): def test_shdcs(self): print("上海多测师") # 运行命令 pytest -k "not sz" -s # 结果如下 test_demo1.py 广州多测师. 上海多测师.
-
- 可以用 and 表示选择的用例名称中同时包含多个关键字,如下
class Test01(): def test_szdcs(self): print("深圳多测师") def test_gzdcs(self): print("广州多测师") class Test02(): def test_shdcs(self): print("上海多测师") # 运行命令 pytest -k "g and z" -s # 结果如下 test_demo1.py 广州多测师.
-
- 可以用 or 表示选择的用例名称中包含其中一个关键字即可,如下
class Test01(): def test_szdcs(self): print("深圳多测师") def test_gzdcs(self): print("广州多测师") class Test02(): def test_shdcs(self): print("上海多测师") # 运行命令 pytest -k "sh or sz" -s # 结果如下 test_demo1.py 深圳多测师. 上海多测师.
- 指定标签运行需要运行的测试项
- @pytest .mark.tag
- tag 为自定义的标签名称
- 可以对方法加上标签
- 也可以对整个类加上标签
- 也可以定义全局标签
- pytest test_demo1.py -m tag -s
- pytest 后面可以接类名称、文件名称、目录名称
- -m 后面接标签名称
- @pytest .mark.tag
# 对方法加标签 import pytest class Test01(): def test_szdcs(self): print("深圳多测师") @pytest.mark.tag # 通过装饰器定义标签,自定义标签名称 tag def test_gzdcs(self): print("广州多测师") class Test02(): def test_shdcs(self): print("上海多测师") # 运行命令 pytest test_demo1.py -m tag -s # 结果如下 test_demo1.py 广州多测师.
# 对类加标签 import pytest class Test01(): def test_szdcs(self): print("深圳多测师") def test_gzdcs(self): print("广州多测师") @pytest.mark.tag class Test02(): def test_shdcs(self): print("上海多测师") # 运行命令 pytest test_demo1.py -m tag -s # 结果如下 test_demo1.py 上海多测师.
import pytest # 定义全局标签 mark = pytest.mark.tag class Test01(): def test_szdcs(self): print("深圳多测师") def test_gzdcs(self): print("广州多测师") class Test02(): def test_shdcs(self): print("上海多测师") # 运行命令 pytest -m tag -s # 结果如下 test_demo1.py 深圳多测师. 广州多测师. 上海多测师.
2、Pytest 中 skip 跳过用例
- 标记 skip 表示跳过该用例,不运行
- pytest.mark.skip(reason="str")
# 在方法上条件装饰器 skip,跳过单条用例 import pytest class Test01(): def test_szdcs(self): print("深圳多测师") @pytest.mark.skip(reason="跳过的用例") def test_gzdcs(self): print("广州多测师") class Test02(): def test_shdcs(self): print("上海多测师") # 运行命令 pytest -sv test_demo1.py # 结果如下 test_demo1.py::Test01::test_szdcs 深圳多测师 PASSED test_demo1.py::Test01::test_gzdcs SKIPPED test_demo1.py::Test02::test_shdcs 上海多测师 PASSED
# 在类上面添加装饰器 skip,跳过整个类中的所有用例 import pytest @pytest.mark.skip(reason="跳过的用例") class Test01(): def test_szdcs(self): print("深圳多测师") def test_gzdcs(self): print("广州多测师") class Test02(): def test_shdcs(self): print("上海多测师") # 运行命令 pytest -sv test_demo1.py # 结果如下 test_demo1.py::Test01::test_szdcs SKIPPED test_demo1.py::Test01::test_gzdcs SKIPPED test_demo1.py::Test02::test_shdcs 上海多测师 PASSED
3、Pytest 中 skipif 跳过用例
- 通过条件判断是否忽略不执行该用例
- 判断条件表达式 pytest.mark.skipif(condition,reason="str")
import pytest class Test01(): def test_szdcs(self): print("深圳多测师") @pytest.mark.skipif(2>1,reason="条件正确不执行") def test_gzdcs(self): print("广州多测师") class Test02(): def test_shdcs(self): print("上海多测师") # 运行命令 pytest -sv test_demo1.py # 结果如下 test_demo1.py::Test01::test_szdcs 深圳多测师 PASSED test_demo1.py::Test01::test_gzdcs SKIPPED test_demo1.py::Test02::test_shdcs 上海多测师 PASSED