猿问

忽略依赖于其他测试成功的单元测试

在编写单元测试时,经常会发生某些测试“依赖”其他测试的情况。

例如,假设我有一个测试可以检查我可以实例化一个类。我还有其他测试,要立即进行实例化,然后再测试其他功能。

还让我们假设该类由于任何原因而无法实例化。

这导致大量测试产生错误。这很糟糕,因为我看不出问题出在哪里。我需要的是一种在我的实例化测试失败的情况下跳过这些测试的方法。

有没有办法用Python的unittest模块来做到这一点?

如果这不是我应该做的事情,那么我应该怎么做才能查看发生故障时真正的问题所在?


慕标琳琳
浏览 178回答 2
2回答

小唯快跑啊

实际上,与我上面的评论相反,我认为您需要的是一种setUpClass方法。从文档中,如果在setUpClass期间引发异常,则不会运行该类中的测试,也不会运行tearDownClass。[...]如果该异常是SkipTest异常,则该类将被报告为已跳过而不是错误。因此,这样的事情应该起作用(我敢肯定它会更整洁):class TestMyClass(unittest.TestCase):    @classmethod    def setUpClass(cls):        # run the constructor test        if constructor_test_failed:            raise unittest.SkipTest("Constructor failed")    def test_other_stuff(self):        # will get run after setUpClass if it succeeded

至尊宝的传说

我没有建议如何避免运行“依赖”测试,但是我有建议您如何更好地使用它们:使依赖关系更加明显,从而使以后分析测试失败更加容易。一种简单的可能性如下:在测试代码中,将用于较低级别方面的测试放在文件的顶部,而将更具依赖性的测试放在底部。然后,当几个测试失败时,请首先查看最接近文件顶部的测试。
随时随地看视频慕课网APP

相关分类

Python
我要回答