在使用 pytest 进行测试时,运行输出的结果中会显示各种符号来表示测试用例的执行状态。其中,"E" 和 "s" 是常见的两种状态标识,它们分别代表不同的含义。
E 的含义
"E" 代表 "Error",即错误。当一个测试用例在执行过程中抛出了一个未捕获的异常,或者出现了其他导致测试无法正常完成的问题时,pytest 会将该测试用例标记为 "E"。
例如,以下是一个会引发错误的测试用例:
import pytest def test_error(): # 这里会引发一个除零错误 result = 1 / 0 assert result == 1
当运行这个测试用例时,pytest 的输出中会显示 "E",表示测试过程中发生了错误。
s 的含义
"s" 代表 "Skipped",即跳过。当一个测试用例被标记为跳过时,pytest 不会执行该测试用例,而是直接将其标记为 "s"。
测试用例可以通过以下几种方式被跳过:
使用
@pytest.mark.skip装饰器使用
@pytest.mark.skipif装饰器,根据条件跳过测试在测试函数中调用
pytest.skip()函数
以下是一些示例:
import pytest
import sys
# 使用 @pytest.mark.skip 装饰器跳过测试
@pytest.mark.skip
def test_skip_decorator():
assert True
# 使用 @pytest.mark.skipif 装饰器根据条件跳过测试
@pytest.mark.skipif(sys.version_info < (3, 8), reason="requires python3.8 or higher")
def test_skipif_decorator():
assert True
# 在测试函数中调用 pytest.skip() 函数跳过测试
def test_skip_function():
if some_condition:
pytest.skip("Skipping this test")
assert True其他常见的 pytest 输出符号
除了 "E" 和 "s" 之外,pytest 还有其他一些常见的输出符号:
".":表示测试用例通过
"F":表示测试用例失败
"x":表示测试用例被预期失败
"X":表示测试用例被意外通过
了解这些符号的含义可以帮助你更好地理解 pytest 的运行结果,从而更有效地调试和修复测试用例中的问题。