Pytest - 对测试进行分组



在本章中,我们将了解如何使用标记对测试进行分组。

Pytest 允许我们在测试函数上使用标记。标记用于设置各种特性/属性以测试函数。Pytest 提供了许多内置标记,如 xfail、skip 和 parametrize。除此之外,用户可以创建自己的标记名称。将使用以下给出的语法在测试中应用标记 −

@pytest.mark.<markername>

要使用标记,我们必须在测试文件中 导入 pytest 模块。我们可以将我们自定义的标记名称定义为测试,并运行具有这些标记名称的测试。

要运行标记测试,我们可以使用以下语法 −

pytest -m <markername> -v

-m <markername> 表示要执行的测试的标记名称。

使用以下代码更新我们的 test_compare.py 和 test_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

查看下面的结果。它运行了标记为 others 的 2 个测试。

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
==========================

同样,我们也可以运行带有其他标记的测试 – great、compare

广告