1
包含N个功能测试的文件夹正在被鼻子正确发现并执行。我希望能够随时中断套件,但到目前为止,鼻子会停止当前正在运行的测试,然后进入下一个测试。用KeyboardInterrupt停止测试套件的鼻子
如果例如KeyboardInterrupt在套件中途发生,您如何正确地放弃鼻子?
包含N个功能测试的文件夹正在被鼻子正确发现并执行。我希望能够随时中断套件,但到目前为止,鼻子会停止当前正在运行的测试,然后进入下一个测试。用KeyboardInterrupt停止测试套件的鼻子
如果例如KeyboardInterrupt在套件中途发生,您如何正确地放弃鼻子?
我通过捕获SIGINT修复了问题,并在其处理程序中设置了一个全局值。这个值在setUp()夹具中被检查,并且如果设置为套件中的每个后续测试引发SkipTest。
这种方式允许当前正在运行的测试完成,之后所有的测试都会被跳过。
from nose.plugins.skip import Skip, SkipTest
test_interrupted = False
class Test_something:
def __init__(self):
...
signal.signal(signal.SIGINT, self.signalHandler)
def signalHandler(self, signal, frame):
global test_interrupted
test_interrupted = True
def setup(self):
if test_interrupted:
raise SkipTest
...