2013-06-28 22 views
1

包含N个功能测试的文件夹正在被鼻子正确发现并执行。我希望能够随时中断套件,但到目前为止,鼻子会停止当前正在运行的测试,然后进入下一个测试。用KeyboardInterrupt停止测试套件的鼻子

如果例如KeyboardInterrupt在套件中途发生,您如何正确地放弃鼻子?

回答

0

我通过捕获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 

     ...