Pytest 在N个测试失败后停止测试套件
在真实的场景中,一旦代码的新版本准备好部署,它首先被部署到预生产/暂存环境中。然后对其运行一个测试套件。
只有测试套件通过,代码才能够用于部署到生产环境。如果存在测试失败,无论是一个还是多个,代码就不准备好部署到生产环境中。
因此,如果我们想在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
===============================
在上面的结果中,我们可以看到执行在一个失败上停止。
Pytest教程目录索引
- Pytest 教程
- Pytest 简介
- Pytest 环境搭建
- Pytest 标识测试文件和测试函数
- Pytest 着手编写基本测试
- Pytest 文件执行
- Pytest 执行一部分测试套件
- Pytest 测试名称的子字符串匹配
- Pytest 分组测试
- Pytest fixture
- Pytest Conftest.py
- Pytest 参数化测试
- Pytest 选择xfail测试或跳过测试
- Pytest 在N个测试失败后停止测试套件
- Pytest 并行运行测试
- Pytest 以XML格式执行测试的结果
- Pytest 总结