如何检测我的python脚本/代码是否从python单元测试运行?
我正在寻找一种优雅的方法来检测我的脚本是从unittest线束运行还是由正常执行触发的。到目前为止,我正在研究如何检测我的python脚本/代码是否从python单元测试运行?,python,python-unittest,Python,Python Unittest,我正在寻找一种优雅的方法来检测我的脚本是从unittest线束运行还是由正常执行触发的。到目前为止,我正在研究'unittest.py'字符串的调用堆栈。然而,我想知道是否有一种更像蟒蛇的方法来达到同样的效果 def hasRunFromUnitTest(): intest = False for path, _, _, _ in traceback.extract_stack(): if 'unittest.py' in path: in
'unittest.py'
字符串的调用堆栈。然而,我想知道是否有一种更像蟒蛇的方法来达到同样的效果
def hasRunFromUnitTest():
intest = False
for path, _, _, _ in traceback.extract_stack():
if 'unittest.py' in path:
intest = True
break
return intest
同意下面的评论这显然是一个黑客行为,但我使用的是复杂的技术分层,我并不总是能够访问底层的API/框架代码。在本例中,我有一个.Net应用程序启动了一个自定义python环境,用于构建.Net UI。有时,底层.NET进程在应用程序退出时从未终止,我需要手动终止它,这也会导致终止我的单元测试工具的副作用
理想情况下,我会在unittest
类中寻找某种属性或常量。这可能更“pythonic”:
这似乎。。。有点愚蠢。你为什么认为你需要这个?如果代码在测试中表现不同,那么测试的意义何在?!你为什么要这么做?检查您的脚本是否是从unittest运行的一开始并不优雅(IMHO)。如果你真的想这样做,我认为一个类似于你的解决方案就是这样做的。
def hasRunFromUnitTest():
return 'unittest' in sys.modules