pytest 其他测试系统-运行为nose编写的测试

2022-03-22 09:46 更新

用法

安装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_*​ 函数调用转换为原始断言语句,同时尽可能保留原始参数的格式。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号