通过文件名类名方法及组合调用部分用例执行

    场景:
    只执行符合要求的某一部分用例,通过类与方法的命名实现。
    解决(以下命令都在py文件所在的包下执行):

    方法1:

    1. pytest -v -s test_class_01.py # 执行整个文件中的方法
    2. pytest -v test_class_01.py::TestClass # 执行文件中指定类中的所有方法
    3. pytest -v test_class_01.py::TestClass::test_one # 执行文件中指定类中的指定方法

    方法2:

    1. pytest -k "TestClass and test_one" test_class_01.py # 执行指定类中的指定方法
    2. pytest -k "TestClass or test_two" test_class_01.py #执行指定类中的所有方法和非类函数test_two
    3. # TestClass是类名,and是运算符,还可以是and not...

    **

    1. <br />执行用例出错时停止

    遇到错误时停止测试使用-x,达到指定错误条数时停止使用—maxfail=n

    1. pytest -x -v -s test_class_01.py # 执行有错时停止
    2. pytest -v test_class_01.py # 执行错误达到指定条数时停止

    执行失败后重试

    场景:

    测试失败后要重新运行n次,要在重新运行之间添加延迟时间, 间隔n秒再运行

    1. pytest -s -v --reruns 4 xx.py # 最多重试4次
    2. pytest -v - -reruns 5 --reruns-delay 1 xx.py # 最多重试5次,每次间隔1秒

    断言失败后,后面的断言可以继续运行

    assume, 有多个assert时,其中一个失败,后面不受影响会继续运行

    import pytest
    
    def test_multiple_assert():
        # assert 1 == 2      # 有多个assert时,其中一个失败,后面的则不会执行
        # assert 2 == 4
        # assert 3 == 4
        pytest.assume(1 == 2)  # 使用assume,其中一个失败,其他也会执行
        pytest.assume(2 == 2)
        pytest.assume(3 == 4)
    

    运行指定类型的用例

    # 按features运行
    pytest -s -v xx.py --allure-features=测试登录功能  
    # 按story运行
    pytest -s -v xx.py --allure-stories=测试成功的登录场景  
    # 按severity运行
    pytest -s -v xx.py  --allure-severities=blocker