我注意到,当我的python单元测试包含功能顶部的文档时,有时框架将它们在测试输出中打印出来。通常,测试输出包含每行测试:
<test name> ... ok
如果测试具有表格的docstring
"""
test that so and so happens
"""
都很好。但是,如果测试在一行上都有一个docstring:
"""test that so and so happens"""
然后,测试输出需要多个行,并包括这样的文档:
<test name>
test that so and so happens ... ok
我找不到记录在哪里的行为。有没有办法将其关闭?
使用docstring的第一个行;负责的方法是TestCase.shortDescription()
,您可以在测试柜中覆盖:
class MyTests(unittest.TestCase):
# ....
def shortDescription(self):
return None
通过始终返回None
,您可以完全关闭该功能。如果要以不同的方式格式化docstring,则可以作为self._testMethodDoc
。
这是martijnpieters的改进版本。
而不是为每个测试覆盖该方法,而是将以下文件添加到您的测试列表中更方便(至少对我而言)。命名文件test_[whatever you want].py
。
test_config.py
import unittest
# Hides Docstring from Verbosis mode
unittest.TestCase.shortDescription = lambda x: None
此代码段也可以放置在test
文件夹的__init__.py
文件中。
就我而言,我只是添加到项目scripts
的根文件夹中,因为我使用scripts
中的python -m unittest
中的Discover来运行项目的所有UnitTests。由于这是该目录级别上唯一的test*.py
文件,因此它将在任何其他测试之前加载。
(我在根文件夹的__init__.py
上尝试了片段,它似乎不起作用,所以我坚持使用文件方法)
btw:我实际上更喜欢lambda x: "t"
而不是lambda x: None
阅读本文后,我为避免样板制作了一个插件。
https://github.com/marechj/nosenodocstrings