Python进阶(10) pytest

0. 前言

  • 简介:pytest是Python的测试框架,是第三方提供的,需要额外安装包。
  • 安装方法:pip install -U pytest,之后就可以通过 pytest --version 来检查是否安装。
  • 官方资料:官方文档

1. 命令与配置

1.1. pytest 的基本使用

  • python -m pytest [...]pytest [...] 的区别
    • 前者将命令行路径添加到了 sys.path 中。
  • 如果失败x次则停止
pytest -x           # stop after first failure
pytest --maxfail=2  # stop after two failures
  • 选择进行单元测试的目标
# 选择文件
pytest test_mod.py

# 选择文件夹
pytest testing/

# 搜索表达式,会搜索文件名、类名、方法名
# 下例子中就是选择包含 MyClass 但不包含 method 的内容
pytest -k "MyClass and not method"

# 指定某文件、某类中的某方法
pytest test_mod.py::test_func
pytest test_mod.py::TestClass::test_method
  • 测试结果展示
    • -r:在测试完成后有一个简短的统计,如下图img
    • -r 后可选择合适的选项,选择展示内容。
    • img
  • 测试失败时使用PDB,pytest --pdb

1.2. 配置文件

2. 代码编写

2.1. 推荐的单元测试源码格式

setup.py
mypkg/
    __init__.py
    app.py
    view.py
tests/
    test_app.py
    test_view.py
    ...
  • 方法二:单元测试源码与项目源码放在相同路径下。
setup.py
mypkg/
    __init__.py
    app.py
    view.py
    test/
        __init__.py
        test_app.py
        test_view.py
        ...

2.2. 文件/类/方法命名规则

  • 官方文档:Conventions for Python test discovery
  • 功能:执行 pytest 命令时会选择那些文件、方法、类进行单元测试。
  • 基本流程:
    • 第一步:指定文件/文件夹的搜索范围。
      • 如果在 pytest 命令行中指定了文件/文件夹,则会处理这些文件/文件夹中的数据。
      • 如果 pytest 没有指定文件/文件夹,那就会从配置文件 testpaths 选项中指定的路径,或当前路径中搜索文件/文件夹。
      • 会搜索指定路径子目录中的内容,但有一个例外,那就是配置文件 norecursedirs指定的路径不会进行搜索。
    • 第二步:在指定搜索范围内选择文件,即所有命名格式为 test_*.py*_test.py 的文件。
    • 第三步:在指定文件中寻找合适的方法。
      • 所有 test 开头的方法(不属于任何类的方法)。
      • 所有 Test 开头类中,test 开头的成员方法。
  • 当然,也可以自定义规则,具体查看 这里

2.3. assert 相关

2.4. pytest fixtures

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值