pytest 其他测试系统-运行为nose编写的测试
用法
安装pytest之后:
python setup.py develop # make sure tests can import our package
pytest # instead of 'nosetests'
你应该能够运行你的nose
风格测试并利用 pytest 的功能。
支持的nose语句
- 在模块/类/方法级别设置和拆卸
- SkipTest异常和标记
- 安装/拆卸修饰符
- 模块/类/函数的
__test__
属性 - nose程序的一般用法
不支持的语句/已知问题
- unittest-style
setUp, tearDown, setUpClass, tearDownClass
只在unittest上被识别。Nose
在普通类上也支持这些方法,但pytest故意不支持。因为nose
和pytest已经都支持setup_class, teardown_class, setup_method, teardown_method
,所以像nose一样复制unittest-API似乎没有什么用。 - 通过扩展
sys.path/import
语义,nose
导入具有相同导入路径(例如,tests.test_mode
)但文件系统路径不同(例如,tests/test_mode.py
和 other/tests/test_mode.py
)的测试模块。如果您将 conftest.py
文件放在项目的根目录中(由 pytest 确定),pytest 将通过将其添加到您的 sys.path
而不是针对您安装的代码运行该目录下的代码来运行测试nose style
。如果你运行 python setup.py install
来设置你的项目,你可能会发现自己想要这样做,而不是 python setup.py develop
或任何包管理器等价物。 在这种模式下,建议在像tox
这样的虚拟环境中使用 develop
进行安装。 -
nose-style doctests
没有被正确地收集和执行,doctest fixture
也没有工作。 - 没有识别出
nose
配置 -
yield-based
方法在pytest 4.1.0是不支持的。它们根本与pytest不兼容,因为它们不能正确地支持fixture
,收集和测试执行是分开的。
从nose迁移到pytest
nose2pytest
是一个 Python 脚本和 pytest 插件,可帮助将基于 Nose
的测试转换为基于 pytest 的测试。 具体来说,该脚本将nose.tools.assert_*
函数调用转换为原始断言语句,同时尽可能保留原始参数的格式。