python程序如何知道它是否正在测试?例如:
def foo():
if foo_being_tested:
pseudorandom()
else:
random()
在测试中,程序应该使用伪随机序列能够与程序的C代码版本进行比较,并且应该使用numpy
中的常规执行随机。
答案 0 :(得分:3)
您无法检查调用堆栈。
一般来说说话,你根本不应该这样做;通过在测试时更改代码,您没有正确测试代码。
相反,您使用模拟替换代码使用的任何部分(被测试代码使用的任何部分,但不是部分代码)。对于您的具体示例,您可以模拟random()
;在Python 3.3及更高版本中,您可以使用unittest.mock
,mock
on PyPI作为其他Python版本,或者您可以在测试期间手动换出module_under_test.random
。
您还可以在单元测试中设置一个环境变量,以明确表示您正在运行测试,但理想情况下应该避免这样做。