使用KeyboardInterrupt从测试套件中阻止鼻子

时间:2013-06-28 19:00:01

标签: python python-2.6 nose nosetests

包含N次功能测试的文件夹正由nose正确发现并执行。我希望能够在任何时候打断套件,但到目前为止,鼻子会停止当前正在运行的测试并继续下一个。

例如,如果在套件中途发生KeyboardInterrupt,你如何正确地退出鼻子?

1 个答案:

答案 0 :(得分:0)

我通过捕获SIGINT修复了问题,并在其处理程序中设置了一个全局值。在setUp()fixture中检查此值,如果设置,则为套件中的每个后续测试引发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

        ...