插件窝 干货文章 pytest测试结果解读:E、s、.分别代表什么含义?

pytest测试结果解读:E、s、.分别代表什么含义?

试用 表示 test 测试 277    来源:    2025-03-13

在使用 pytest 进行测试时,测试结果中会显示一些符号来表示每个测试用例的执行状态。以下是常见的符号及其含义:

  1. . (点号):

    • 表示测试用例成功通过。也就是说,测试用例没有抛出任何异常,并且所有断言都通过了。
  2. E:

    • 表示测试用例执行过程中发生了异常。这通常意味着测试代码本身有问题,或者被测代码抛出了未处理的异常。E 后面通常会跟随详细的异常信息,帮助你定位问题。
  3. s:

    • 表示测试用例被跳过(skipped)。这可能是因为测试用例被标记为跳过(使用 @pytest.mark.skip 装饰器),或者测试用例满足某些跳过的条件(例如,某些依赖项不可用)。

其他常见的符号:

  • F: 表示测试用例失败(failed)。这意味着测试用例中的某个断言失败了,但测试用例本身没有抛出异常。
  • x: 表示测试用例预期失败(expected to fail)。这通常是因为测试用例被标记为预期失败(使用 @pytest.mark.xfail 装饰器),并且它确实失败了。
  • X: 表示测试用例预期失败但通过了。这通常是因为测试用例被标记为预期失败,但它却意外地通过了。
  • !: 表示测试用例严重错误(通常是由于测试框架或插件的问题)。

示例:

假设你有以下测试代码:

import pytest

def test_pass():
    assert 1 + 1 == 2

def test_fail():
    assert 1 + 1 == 3

def test_error():
    raise ValueError("Something went wrong")

@pytest.mark.skip(reason="Not implemented yet")
def test_skip():
    assert 1 + 1 == 2

运行 pytest 后,你可能会看到如下输出:

test_example.py::test_pass .
test_example.py::test_fail F
test_example.py::test_error E
test_example.py::test_skip s
  • . 表示 test_pass 通过了。
  • F 表示 test_fail 失败了。
  • E 表示 test_error 抛出了异常。
  • s 表示 test_skip 被跳过了。

总结:

  • . 表示测试通过。
  • E 表示测试执行过程中发生了异常。
  • s 表示测试被跳过。

这些符号帮助你快速了解测试的执行情况,从而更好地定位和解决问题。