Pytest - 对测试进行分组

  • 简述

    在本章中,我们将学习如何使用标记对测试进行分组。
    Pytest 允许我们在测试函数上使用标记。标记用于设置各种特征/属性来测试功能。Pytest 提供了许多内置标记,例如 xfail、skip 和 parametrize。除此之外,用户可以创建自己的标记名称。使用下面给出的语法将标记应用于测试 -
    
    @pytest.mark.<markername>
    
    要使用标记,我们必须import pytest测试文件中的模块。我们可以为测试定义我们自己的标记名称并运行具有这些标记名称的测试。
    要运行标记的测试,我们可以使用以下语法 -
    
    pytest -m <markername> -v
    
    -m <markername> 表示要执行的测试的标记名称。
    更新我们的测试文件test_compare.pytest_square.py使用以下代码。我们正在定义 3 个标记– great, square, others.
  • test_compare.py

    
    import pytest
    @pytest.mark.great
    def test_greater():
       num = 100
       assert num > 100
    @pytest.mark.great
    def test_greater_equal():
       num = 100
       assert num >= 100
    @pytest.mark.others
    def test_less():
       num = 100
       assert num < 200
    
  • test_square.py

    
    import pytest
    import math
    @pytest.mark.square
    def test_sqrt():
       num = 25
       assert math.sqrt(num) == 5
    @pytest.mark.square
    def testsquare():
       num = 7
       assert 7*7 == 40
    @pytest.mark.others
       def test_equality():
       assert 10 == 11
    
    现在运行标记为的测试others,运行以下命令 -
    
    pytest -m others -v
    
    请参阅下面的结果。它运行了标记为的 2 个测试others.
    
    test_compare.py::test_less PASSED
    test_square.py::test_equality FAILED
    ============================================== FAILURES
    ==============================================
    ___________________________________________ test_equality
    ____________________________________________
       @pytest.mark.others
       def test_equality():
    >  assert 10 == 11
    E  assert 10 == 11
    test_square.py:16: AssertionError
    ========================== 1 failed, 1 passed, 4 deselected in 0.08 seconds
    ==========================
    
    同样,我们也可以使用其他标记运行测试——很好,比较