【问题标题】:skip teardown when testcase fails测试用例失败时跳过拆卸
【发布时间】:2014-12-09 13:43:19
【问题描述】:

如果任何测试用例失败,是否有任何方法可以跳过拆卸方法。 我尝试了 -x 选项,但它只跳过测试用例而不是拆解。 我确信当测试用例失败时必须有某种方式,执行它的设置需要在那里进行调试。

【问题讨论】:

  • 在您尝试停止拆解之前:您确定您的测试用例定义正确吗?如果你有正当的理由需要一个巨大的、复杂的测试用例,请忽略(我在这里猜测是出乎意料的),但直觉告诉我问题可能确实出在测试上,而不是不得不停止拆解。
  • 如果测试用例失败则停止拆卸将提供该状态下的设置并且更容易调试。有没有其他办法?
  • 我更熟悉 java,它有非常好的 IDE 和 UnitTesting 系统,但是你的系统没有提供设置断点以进行调试的方法吗?我的假设是 python 不能有那么不同:)。
  • 当然调试器可以提供帮助。我只是想知道鼻子测试本身是否有办法:)
  • 我也在寻找这个。你找到干净的解决方案了吗?

标签: python nosetests


【解决方案1】:

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

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

如果你运行它,你会得到:

I am in setup
I am in test fail

I am in setup
I am in test pass
I am in teardwon

但请注意,在这种情况下捕获 AssertionError 并不是一个好习惯。您应该考虑搜索鼻子插件或自己编写一个。

【讨论】:

  • 当然。会试试这个。谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多