如何让我的(Python 2.7)代码知道它是否在doctest中运行?如何确定代码是否在doctest中运行?
的情况如下:我有一个功能,print()
小号一些输出传递作为参数文件描述符,这样的事情:
from __future__ import print_function
def printing_func(inarg, file=sys.stdout):
# (do some stuff...)
print(result, file=file)
但是当我尝试在一个文档测试使用printing_func()
,测试失败;由于我在调用print()
时指定了关键字参数file
,所以输出结果实际上是sys.stdout
,而不是默认的输出重定向由doctest模块设置,并且doctest从未看到输出。
那么我怎么能让printing_func()
知道它是否在doctest中运行,以便它在调用print()
时知道不会通过file
关键字参数?
这是一个比试图弄清楚你是否在doctest内更好的计划。 –
我同意雷蒙德;将代码添加到您的系统以检查它是否正在测试并使其行为不同的想法绝对不是测试方法的理想选择! – Ben
我一般都认同,但我认为如果只为了支持测试基础设施而这样做是有害的。 – mshroyer