如何从python unittes发出测试错误(而不是失败)的信号

2024-10-01 09:42:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有助手方法assertContains(super, sub)的测试用例。sub参数是测试用例的硬编码部分。万一它们格式不正确,我希望我的测试用例因错误而中止。在

我该怎么做?我试过了

def assertContains(super, sub):
    if isinstance(super, foo): ...
    elif isinstance(super, bar): ...
    else: assert False, repr(sub)

然而,这会使测试变成失败而不是错误。在

我可以引发其他异常(例如ValueError),但我想明确声明我声明的测试用例是错误的。我可以做ErrorInTest = ValueError然后raise ErrorInTest(repr(sub)),但感觉有点恶心。我觉得应该有一个电池包括这样做的方式,但阅读友好的手册没有给我任何建议。在


Tags: 方法声明编码参数def格式错误助手
1条回答
网友
1楼 · 发布于 2024-10-01 09:42:09

TestCase中的方面有一个assertRaises(),在该类中,您希望确保待测试代码引发错误。在

如果您想在此时引发错误并中止对该单元的测试(并继续进行下一个单元测试),只需引发一个未捕获的异常;单元测试模块将捕捉到它:

raise NotImplementedError("malformed sub: %r" % (sub,))

我不认为除了直接引发错误以声明单元测试用例导致错误之外,还有其他API方面可用。在

^{pr2}$

结果:

EF..
======================================================================
ERROR: runTest (__main__.ErrorTest)
                                   
Traceback (most recent call last):
  File "./t.py", line 15, in runTest
    raise NotImplementedError("error")
NotImplementedError: error

======================================================================
FAIL: runTest (__main__.FailingTest)
                                   
Traceback (most recent call last):
  File "./t.py", line 11, in runTest
    self.assertTrue(False)
AssertionError: False is not true

                                   
Ran 4 tests in 0.002s

FAILED (failures=1, errors=1)

相关问题 更多 >