codecamp

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


pytest 其他测试系统-使用unittest基于pytest的测试
pytest 其他测试系统-如何实现xunit风格的设置
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }