【问题标题】:How to fail a python unittest in setUpClass?如何使 setUpClass 中的 python 单元测试失败?
【发布时间】:2013-01-23 22:58:16
【问题描述】:

我正在使用 python 进行一些单元测试,并在 setUpClass 中进行一些预测试检查。如何在setUpClass 内抛出unitest-fail,如下简单示例:

class MyTests(unittest.TestCase):

    @classmethod
    def setUpClass(cls):    
        unittest.TestCase.fail("Test")

    def test1(self):
        pass

if __name__ == '__main__':
    unittest.main()

给出错误TypeError: unbound method fail() must be called with TestCase instance as first argument (got str instance instead)

我知道我得到的错误是一个实例方法,我还没有MyClass 的实例。即时使用实例

unittest.TestCase().fail("Test")

也不起作用,因为unittest.TestCase 本身没有测试。当setUpClass 中的某些条件不满足时,任何想法如何使MyClass 中的所有测试失败?

后续问题:有没有办法查看setUpClass 中的测试?

【问题讨论】:

标签: python unit-testing python-2.7


【解决方案1】:

self.fail("test") 放入您的 setUp 实例方法未通过所有测试

我认为在类级别执行此操作的最简单方法是创建一个类变量,如下所示:

@classmethod
def setUpClass(cls):
   cls.flag = False

def setUp(self):
   if self.flag:
       self.fail("conditions not met")

希望这是你想要的。

【讨论】:

    【解决方案2】:

    使用简单的断言应该可以工作

    assert False, "I mean for this to fail"
    

    【讨论】:

    • 测试运行者不会报告这个错误而不是失败吗?
    • 是否引发 AssertionError 意味着测试失败?
    猜你喜欢
    • 1970-01-01
    • 2012-07-12
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多