Pytest执行用例规则

注意,下面讲的都是在cmd中执行pytest命令

1、某个目录下所有的用例

pytest

2、执行某一个 py 文件下用例

pytest 脚本名称.py

3、运行start.py 模块里面的某个函数,或者某个类,某个类里面的方法

加v和不加-v都可以,加-v的话,打印的信息更详细

pytest -v 08_mark.py::TestClass::test_method

pytest 08_mark.py::TestClass::test_method

pytest start.py::test_answer

4、运行start.py 模块里面,测试类里面的某个方法

pytest start.py::TestClass::test_two

5、-q 简单打印,只打印测试用例的执行结果

 pytest -q start.py

6、-s 详细打印

 pytest -s start.py

7、-x 遇到错误时停止测试

pytest start.py -x

8、—maxfail=num,当用例错误个数达到指定数量时,停止测试

pytest start.py --maxfail=1

9、-k 匹配用例名称

执行测试用例名称包含http的所有用例

pytest -s -k http start.py

10、-k 根据用例名称排除某些用例

1 pytest -s -k "not http" start.py

11、-k 同时匹配不同的用例名称

pytest -s -k "method or weibo" start.py

12、-k 可以用 and 表示选择名字同时包含多个关键字

pytest -k "method and weibo" -s

注意,-k 后面的名字

  • 可以是测试函数的名字,可以是类的名字,可以是模块文件名,可以是目录的名字

  • 是大小写敏感的

  • 不一定要完整,只要能有部分匹配上就行

13、-m 标记表达式

 pytest -m login

将运行用 @pytest.mark.login 装饰器修饰的所有测试

可以这样给 某个方法加上标签 login

import pytest

class Test_login:

    @pytest.mark.login
    def test_1(self):
        print('\n用例1')
        assert 1 == 1

然后,可以这样运行指定标签的用例

pytest cases -m login -s

也可以这样给整个类加上标签

@pytest.mark.login
class Test_login:

    def test_1(self):
        print('\n用例1')
        assert 1 == 1

当然标签也支持中文

@pytest.mark.登录测试
class Test_login:

    def test_1(self):
        print('\n用例1')
        assert 1 == 1

然后,运行命令行指定标签

pytest cases -m 登录测试 -s

可以这样同时添加多个标签

@pytest.mark.网页测试
@pytest.mark.登录测试
class Test_错误密码2:

    def test_1(self):
        print('\n用例1')
        assert 1 == 1

可以这样定义一个全局变量 pytestmark为 整个模块文件设定标签

import pytest
pytestmark = pytest.mark.网页测试

如果你需要定义多个标签,可以定义一个列表

import pytest
pytestmark = [pytest.mark.网页测试, pytest.mark.登录测试]

注意这里会有warnings,如此解决

  • 创建一个pytest.ini文件
  • 加上自定义mark,如下
  • 注意:pytest.ini需要和运行的测试用例同一个目录,或在根目录下作用于全局
[pytest]
markers = login 
          网页测试
上一篇 下一篇