以编程方式检测python代码是否正在测试中

时间:2014-08-21 11:23:55

标签: python unit-testing python-unittest

python程序如何知道它是否正在测试?例如:

def foo():
    if foo_being_tested:
        pseudorandom()
    else:
        random()

在测试中,程序应该使用伪随机序列能够与程序的C代码版本进行比较,并且应该使用numpy中的常规执行随机。

1 个答案:

答案 0 :(得分:3)

您无法检查调用堆栈。

一般来说说话,你根本不应该这样做;通过在测试时更改代码,您没有正确测试代码。

相反,您使用模拟替换代码使用的任何部分(被测试代码使用的任何部分,但不是部分代码)。对于您的具体示例,您可以模拟random();在Python 3.3及更高版本中,您可以使用unittest.mockmock on PyPI作为其他Python版本,或者您可以在测试期间手动换出module_under_test.random

您还可以在单​​元测试中设置一个环境变量,以明确表示您正在运行测试,但理想情况下应该避免这样做。