expectedFailure被视为错误而非传递

Jas*_*gan 8 python django unit-testing

我正在使用,expectedFailure因为有一个我想记录的错误,我现在无法解决,但希望将来再回来.我的理解expectedFailure是,它会将测试视为已通过,但在摘要中说有x个预期的失败(类似于它对跳过的tets的工作原理).

但是,当我运行我的测试套件时,我得到以下内容:

$ ./manage.py test eav.QueryTest
Creating test database for alias 'default'...
.EE
======================================================================
ERROR: test_q_object_with_exclude (eav.tests.managers.QueryTest)
----------------------------------------------------------------------
_ExpectedFailure

======================================================================
ERROR: test_q_objects_unioned (eav.tests.managers.QueryTest)
----------------------------------------------------------------------
_ExpectedFailure

----------------------------------------------------------------------
Ran 3 tests in 1.095s

FAILED (errors=2)
Destroying test database for alias 'default'...
Run Code Online (Sandbox Code Playgroud)

我不确定这是否属于Django的测试运行员或者我做错了什么.

@unittest.expectedFailure
def test_q_object_with_exclude(self):
    # Everyone except Bob
    q_set = eav_m.Process.objects.exclude(
        Q(eav__details__city__contains='Y'))
    self.assertEqual(q_set.count(), 4)
Run Code Online (Sandbox Code Playgroud)

fro*_*g32 7

你的理解expectedFailure是对的.你的问题是那些测试没有失败,它们会引发一个与失败不同的异常.

你正在寻找的装饰者是skip.

  • @JonathanHartley并非如此。测试以两种方式失败。如果它们由于某个断言失败而失败,则状态为“失败”,但是如果发生崩溃(如引发异常),则状态为“错误”。ExpectedFailure意味着您期望测试失败,但这并不意味着您期望它崩溃。 (2认同)