Python 当testcase失败时跳过拆卸

Python 当testcase失败时跳过拆卸,python,nosetests,Python,Nosetests,如果任何一个测试用例失败,有没有办法跳过teardown方法呢。 我尝试了-x选项,但它只跳过测试用例,而不删除。 我确信当testcase失败时,一定会有某种方法,执行它的安装程序需要在那里进行调试。以某种方式实现它的一种方法是: class TestClass(): def setup(self): print "I am in setup" def teardown(self): if getattr(self, 'is_fail', F

如果任何一个测试用例失败,有没有办法跳过teardown方法呢。 我尝试了-x选项,但它只跳过测试用例,而不删除。
我确信当testcase失败时,一定会有某种方法,执行它的安装程序需要在那里进行调试。

以某种方式实现它的一种方法是:

class TestClass():

    def setup(self):
        print "I am in setup"

    def teardown(self):
        if getattr(self, 'is_fail', False):
            return
        print "I am in teardown"

    def test_fail(self):
        print "I am in test fail"
        try:
            assert False
        except AssertionError as e:
            setattr(self, 'is_fail', True)
            raise e

    def test_pass(self):
        print 'I am in test pass'
        try:
            assert True
        except AssertionError as e:
            setattr(self, 'is_fail', True)
            raise e
如果您运行它,您将获得:

我正在安装中

我测试失败了


我正在安装中

我通过了考试

我泪流满面


但请注意,在本例中捕捉断言错误并不是一个好的做法。你应该考虑寻找一个鼻子插件或自己写一个。 在您尝试停止拆卸之前:您确定您的测试用例定义正确吗?如果你对一个庞大而复杂的测试用例有充分的理由,请忽略(我在这里猜测是出乎意料的),但是直觉告诉我问题可能确实出在测试上,而不是必须停止拆卸。如果测试用例失败,停止拆卸将使设置处于那种状态,并且更容易调试。还有其他方法吗?我更熟悉java,它有非常好的IDE和单元测试系统,但是您的系统不提供设置断点进行调试的方法吗?我运行的假设是python不能有那么大的不同:)。当然,调试器可以提供帮助。我只是想知道鼻测试本身是否有一种方法:)我也在寻找这个方法。你找到干净的解决办法了吗?当然。我要试试这个。谢谢:)