Pytest权威教程15-运行Nose用例
运行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这样的虚拟环境进行开发。pythonsetup.pyinstall``pythonsetup.pydevelop
-
没有正确收集和执行nose式doctests,doctest fixtures也不起作用。
-
没有nose配置被识别。
-
yield
基于方法的方法不能setup
正确支持,因为该setup
方法总是在同一个类实例中调用。目前没有计划修复此问题,因为yield
-test在pytest 3.0中已弃用,pytest.mark.parametrize
建议使用。