py.test 2.0.0:断言++、UnitTest++、Reporting++、Config++、Docs++

欢迎使用Pytest-2.0.0,这是快速、简单的Python测试工具“py.test”的主要新版本。有许多新功能和增强功能,请参阅下面的摘要和详细列表。许多长期不推荐使用的代码已被删除,从而导致实现更小、更干净。请参阅以下示例中的新文档:

http://pytest.org/en/stable/index.html

包装注意事项:Pytest在PY-1.3.4版本之前一直是“PY”发行版的一部分,但现在已经改变了:Pytest-2.0.0只包含与PY.test相关的代码,并且期望与现有的测试代码向后兼容。如果要安装pytest,只需键入以下内容之一:

pip install -U pytest
easy_install -U pytest

感谢所有的新闻记者和提问或抱怨的人。特别感谢FlorisBruynooghe和RonnyPfanschmidt对编码的贡献,以及许多其他人的反馈和帮助。

最好的,霍尔格·克里克

新特点

  • 通过python解释器和python进行的新调用:

    python -m pytest      # on all pythons >= 2.5
    

    或者从python程序:

    import pytest ; pytest.main(arglist, pluginlist)
    

    看到了吗http://pytest.org/en/stable/usage.html了解详情。

  • 如果比较列表、序列或字符串,则在断言表达式中报告新的和更好的信息。

    看到了吗http://pytest.org/en/stable/assert.htmlnewreport

  • 通过ini文件的新配置(已识别setup.cfg或tox.ini),例如:

    [pytest]
    norecursedirs = .hg data*  # don't ever recurse in such dirs
    addopts = -x --pyargs      # add these command line options by default
    

    看到了吗http://pytest.org/en/stable/customize.html

  • 改进的标准单元测试支持。一般来说,py.test现在应该能够更好地运行自定义的unittest.testcase,比如twisted trial或基于django的testcase。您现在还可以使用py.test:运行已安装的“unittest”包的测试:

    py.test --pyargs unittest
    
  • 新的“-q”选项减少了冗长的内容,并打印出更多的鼻/单元测试样式的“点”输出。

  • 许多更详细的改进细节

修正

  • 修复问题126-在测试运行期间引入py.test.set_trace()以通过pdb跟踪执行,即使捕获正在进行。

  • 修复问题124-使报告对在文件描述符1(stdout)上打开文件的测试更有弹性。

  • 修复问题109-将不加载同级conftest.py文件。(目录收集器不能再从目录的conftest.py中定制了——这至少需要在一个级别上进行)。

  • 修复问题88(从命令行arg中查找自定义测试节点)

  • 修复问题93导入conftest.py时捕获stdout/stderr

  • 修复错误:UnitTest收集的函数现在也可以在类/模块级别应用“pytestmark”。

重要音符

  • 在python代码中使用py.test的2.0之前版本中,通常的方法是导入“py”,然后为助手使用“py.test.raises”。这仍然有效,不计划弃用。但是,在大多数示例和内部代码中,您会发现“import pytest”和“pytest.raises”用作推荐的默认方法。

  • 在运行任何测试之前,pytest现在首先执行完整测试套件的收集。例如,当调用pytest_collectstart/pytest_collectreport时,语义会发生变化。某些插件可能需要升级。

  • pytest包由一个400 loc core.py和大约20个内置插件组成,总计大约5000个loc,包括docstring。公平地说,它还使用来自“pylib”的通用代码和新的“py”包来帮助文件系统和内省/代码操作。

(不兼容)删除

  • py.test.config现在只有在测试运行时才可用。

  • 删除了以下(大部分已弃用)功能:

    • 移除模块/类/的支架。conftest.py文件中的集合节点定义。它们不会造成什么特别的后果。

    • 删除了对调用“run()”和“join”的1.0之前的集合API的支持

    • 已从conftest.py文件或env变量中删除读取选项值。现在可以通过ini文件机制,特别是“addopts”条目,更好、更容易地完成这项工作。

    • 删除了测试类中的“disabled”属性。使用跳过和pytestmark机制跳过或Xfail测试类。

  • py.test.collect.directory不再存在,无法提供自己的“directory”对象。如果你用过这个但不知道该怎么做,联系一下。我们会想办法的。

    注意,pytest_collect_directory()仍然被调用,但任何返回值都将被忽略。这允许保持旧代码的工作状态,例如collect()中的“py.test.skip()”以防止在缺少某个依赖项或命令行选项时递归到目录树中。

看见 Changelog 更详细的更改。