我正在寻找一种优雅的方法来检测我的脚本是从单元测试线程运行还是由正常执行触发。到目前为止,我正在调查'unittest.py'
字符串的调用堆栈。但是我想知道是否有更多的pythonic方法来实现相同的结果。
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
类中寻找某种属性或常量。
答案 0 :(得分:2)
这可能更多" pythonic":
def hasRunFromUnitTest():
return 'unittest' in sys.modules