Pytest 简明教程
Pytest - Stop Test Suite after N Test Failures
在实际场景中,一旦新版本的代码已经准备好部署,它将首先部署到预生产/暂存环境。然后在此环境上运行测试套件。
仅当测试套件通过时,代码才有资格部署到生产环境。如果存在测试失败,无论是一个还是多个,代码都尚未准备好部署到生产环境。
因此,如果我们想在 n 个以上的测试失败后立即停止测试套件的执行,该怎么办。这可以使用 pytest 中的 maxfail 来完成。
在 n 个测试失败后立即停止测试套件执行的语法如下 -
pytest --maxfail = <num>
使用以下代码创建文件 test_failure.py。
import pytest
import math
def test_sqrt_failure():
num = 25
assert math.sqrt(num) == 6
def test_square_failure():
num = 7
assert 7*7 == 40
def test_equality_failure():
assert 10 == 11
执行此测试文件时,所有 3 个测试都将失败。在此,我们将通过以下方式在一个失败本身之后停止测试执行 -
pytest test_failure.py -v --maxfail 1
test_failure.py::test_sqrt_failure FAILED
=================================== FAILURES
=================================== _______________________________________
test_sqrt_failure __________________________________________
def test_sqrt_failure():
num = 25
> assert math.sqrt(num) == 6
E assert 5.0 == 6
E + where 5.0 = <built-in function sqrt>(25)
E + where <built-in function sqrt>= math.sqrt
test_failure.py:6: AssertionError
=============================== 1 failed in 0.04 seconds
===============================
在以上结果中,我们可以看到执行在一个失败后停止。