pytest学习总结2 - 如何调用pytest?

2.1 如何调用pytest

通常,pytest使用命令pytest调用(参见下面调用pytest的其他方法)。这将在当前目录及其子目录中名称遵循test_*.py或*_test.py形式的所有文件中执行
所有测试。更一般地说,pytest遵循标准的测试发现规则。

2.1.1 指定要运行的测试

Pytest支持几种运行和选择测试的方法

  1. 运行一个模块的测试用例:pytest test_mod.py
  2. 运行一个目录所有的测试用例:pytest testing/
  3. 按关键字表达式运行测试:pytest -k “MyClass and not method”
class TestMyClass:

    def test_something(self):
        pass

    def test_method_simple(self):
        pass
collected 2 items / 1 deselected / 1 selected                                                                                                                                                                                             

test_jiao.py .                                                                                                                                                                                                                      [100%]

==================================================================================================== 1 passed, 1 deselected in 0.02s =====================================================================================================
  1. 按节点ID运行测试
    每个收集到的测试都被分配了一个唯一的nodeid,它包括模块文件名,后面跟着说明符,如类名、函数名和参数化中的参数等说明符,由::字符分隔。
    要在模块中运行特定的测试:pytest test_mod.py::test_func
    在命令行中指定测试方法的另一个示例:pytest test_mod.py::TestClass::test_method
  2. 通过标记表达式运行测试:pytest -m slow
import pytest
class TestMyClass:
    def test_something(self):
        pass
    @pytest.mark.slow
    def test_method_simple(self):
        pass
  1. 从包中运行测试:pytest --pyargs pkg.testing

2.1.2 获取关于版本、选项名称、环境变量的帮助

pytest --version # 显示测试是从哪里导入的 pytest --fixtures # 显示可用的内置函数参数 pytest -h | --help # 显示有关命令行和配置文件选项的帮助

2.1.3 分析测试的执行的持续时间

要获得超过1.0秒长的最慢的10个测试持续时间的列表:pytest --durations=10 --durations-min=1.0
默认情况下,pytest不会显示测试时间太小(<0.005s)的持续时间,除非在命令行上传递-vv。

2.1.4 管理插件的加载

(1)使用插件
您可以使用-p选项在命令行中显式地早期加载插件(内部和外部):
pytest -p mypluginmodule pytest -p pytest_cov
(2)禁用插件
要在调用时禁用加载特定的插件,请使用-p选项和前缀no:
pytest -p no:doctest

2.1.5 其他调用pytest的方法

  1. 通过python调用,也相当于调用命令行脚本pytest…:
    python -m pytest [...]
  2. 从Python代码调用pytest:
    retcode = pytest.main()
    这就像您要从命令行中调用“pytest”一样。它不会提高系统退出,而是返回退出代码。您可以传递以下选项和参数:
    retcode = pytest.main(["-x", "mytestdir"])
    指定其他插件到pytest.main,运行它将显示MyPlugin被添加,它的钩子被调用:
import pytest
import sys


class MyPlugin:
    def pytest_sessionfinish(self):
        print("*** test run reporting finishing")


if __name__ == "__main__":
    sys.exit(pytest.main(["-qq"], plugins=[MyPlugin()]))
C:\Users\mc\Desktop\python>python tiaoce.py
*** test run reporting finishing
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿_焦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值