主页

索引

模块索引

搜索页面

常用

说明:

- 测试函数命名必须以 test_ 开头
- 测试函数必须返回一个布尔值,True 表示测试通过,False 表示测试失败

主要功能:

- 简洁的断言格式:无需使用特定的断言方法,直接使用 Python 的 assert 语句。
- 丰富的插件系统:通过插件可以扩展 pytest 的功能,如生成测试报告、并行执行测试等。
- 测试夹具(fixtures):可以用来设置测试前后需要的准备和清理工作,提高测试代码的可维护性和复用性。

命名规则:

类名以 Test 开头: TestXxxx
函数名以 test_ 开头: test_xxxx
文件名以 test_ 开头: test_xxxx

选项

基本(general):

-k expr:
    根据表达式过滤测试,例如 -k "MyClass and not method"
-m marker:
    根据标记过滤测试,例如 -m "slow"
-s(--capture=no):
    允许 pytest 显示标准输出(例如,print 语句的输出)
    (注:不加-s,插件里面的print还是会显示的,只是test_xxx文件里面的print不显示)
--capture=method
    Per-test capturing method: one of fd|sys|no|tee-sys

# 失败重跑
--lf 或 --last-failed:
    只重新运行上次失败的测试。
--ff 或 --failed-first:
    先运行上次失败的测试,然后运行其他测试。

--pdb
    失败(或KeyboardInterrupt)时调用Python调试器
    示例:
        pytest -x --pdb   # 在第一次用例失败时进入PDB
        pytest --pdb --maxfail=3  # 在前3次失败是进入PDB
--trace
    测试开始时进入PDB

测试报告和输出(Reporting):

-v(--verbose)
    启用详细模式,显示每个测试的名称和执行结果
    (如:使用它会显示: FAILED,而不使用它只会显示F)
        (f)ailed
        (E)rror
        (s)kipped
        (x)failed(@pytest.mark.xfail): 符合预期
        (X)passed(@pytest.mark.xfail): 不符合预期
        (p)assed
        (P)assed with output
        (a)ll except passed(p/P)
        (A)ll
-q(--quiet)
    减少测试输出的详细程度
--tb=style
    控制回溯报告风格
    pytest --tb=auto    # (默认) 第1和最后1条使用详细追溯信息,其他使用简短追溯信息
    pytest --tb=long    # 详尽,信息丰富的追溯信息格式
    pytest --tb=short   # 简短的追溯信息格式
    pytest --tb=line    # 每个失败信息一行
    pytest --tb=native  # Python标准库格式
    pytest --tb=no      # 不使用追溯信息
-l, --showlocals
    Show locals in tracebacks (disabled by default)
--durations=num:
    显示运行时间最久的 num 个测试
-r chars
    (default: 'fE')
    用于在测试会话结束时显示测试结果摘要,从而可以在大型测试套件中轻松获得所有失败、跳过、标记失败(xfails)等测试结果的清晰图像
    Show extra test summary info as specified by chars:
        (f)ailed, (E)rror, (s)kipped, (x)failed, (X)passed,
        (p)assed, (P)assed with output, (a)ll except passed
        (p/P), or (A)ll.
        注:参见上面 -v
    示例:只查看失败和跳过的用例
        pytest -rfs

test session debugging and configuration:

-p name
    指定加载或不加载某个插件
    加载插件: pytest -p myplugin
    禁用插件: pytest -p no:myplugin
--trace-config
    Trace considerations of conftest.py files
    用于输出详细的配置加载过程和信息。
    这对于调试和了解 pytest 的配置如何被解析和加载非常有用。
    打印出以下信息:
        a. pytest 加载的所有配置文件
        b. pytest 使用的所有插件
        c. pytest 解析的所有命令行参数
        d. pytest 生成的最终配置对象

其他:

--maxfail=num
    在达到指定数量的失败后停止测试运行

基本用法

运行特定测试:

# 运行指定目录下的所有测试
pytest test_directory/
# 指定文件名
pytest test_file.py
# 指定函数名
pytest test_file.py::test_method
# 指定类名
pytest test_file.py::TestClass
# 指定类中的某个测试方法
pytest test_file.py::TestClass::test_method

# 通过标记表达式运行测试(执行所有带@pytest.mark.slow装饰器的用例)
pytest -m slow

# 从包中运行测试(导入pkg.testing并使用其文件系统位置来查找和运行测试)
pytest --pyargs pkg.testing

在测试文件中增加:

if __name__ == "__main__":
    pytest.main([__file__, "-s"])
等同于:
    在命令行执行 `pytest -s` 命令

if __name__ == "__main__":
    pytest.main([__file__, "-s", "-v"])
等同于:
    在命令行执行 `pytest -s -v` 命令

主页

索引

模块索引

搜索页面