目录:
- 安装及入门
- 使用和调用方法
- 原有TestSuite使用方法
- 断言的编写和报告
- Pytest fixtures:清晰 模块化 易扩展
- 使用Marks标记测试用例
- Monkeypatching/对模块和环境进行Mock
- 使用tmp目录和文件
- 捕获stdout及stderr输出
- 捕获警告信息
- 模块及测试文件中集成doctest测试
- skip及xfail: 处理不能成功的测试用例
- Fixture方法及测试用例的参数化
- 缓存: 使用跨执行状态
- unittest.TestCase支持
- 运行Nose用例
- 经典xUnit风格的setup/teardown
- 安装和使用插件
- 插件编写
- 编写钩子(hook)方法
- 运行日志
- API参考
- 优质集成实践
- 片状测试
- Pytest导入机制及sys.path/PYTHONPATH
- 配置选项
- 示例及自定义技巧
- Bash自动补全设置
运行Nose用例
pytest
有基本支持运行为nose编写的测试。
用法
后安装pytest类型:
python setup.py develop # make sure tests can import our package
pytest # instead of 'nosetests'
你应该能够运行你的nose样式测试并利用pytest的功能。
支持的nose风格
- 在模块/类/方法级别进行设置和拆卸
- SkipTest异常和标记
- 设置/拆卸装饰器
-
yield
基于测试及其设置(从pytest 3.0开始被认为已弃用) -
__test__
模块/类/函数的属性 - nose工具的一般用法
不支持的习语/已知问题
unittest-style 仅在类上被识别,而在普通类上不被识别。 在普通类上也支持这些方法,但pytest故意不支持。由于nose和pytest都已经支持 它,因此像nose一样复制unittest-API似乎没什么用。但是,如果你认为pytest应该支持普通类的单元测试拼写,请发帖到这个问题。
setUp, tearDown, setUpClass, tearDownClass``unittest.TestCase``nose``setup_class,teardown_class, setup_method, teardown_method
-
通过扩展sys.path / import语义,nose导入具有相同导入路径(例如
tests.test_mod
)但不同文件系统路径(例如tests/test_mode.py
和other/tests/test_mode.py
)的测试模块 。pytest不这样做,但在#268中有讨论增加一些支持。请注意, nose2选择避免此sys.path / import hackery。如果将conftest.py文件放在项目的根目录中(由pytest确定),pytest将对该目录下面的代码运行测试“nose style”,方法是将其添加到您
sys.path
的安装代码而不是运行。如果您运行 设置项目而不是或任何包管理器等效项,您可能会发现自己想要这样做。建议在此模式下使用像tox这样的虚拟环境进行开发。
python setup.py install``python setup.pydevelop
没有正确收集和执行nose式doctests,doctest fixtures也不起作用。
没有nose配置被识别。
yield
基于方法的方法不能setup
正确支持,因为该setup
方法总是在同一个类实例中调用。目前没有计划修复此问题,因为yield
-test在pytest 3.0中已弃用,pytest.mark.parametrize
建议使用。