expectedFailure被视为错误而非传递

时间:2011-12-13 17:26:20

标签: 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'...

我不确定这是否属于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)

2 个答案:

答案 0 :(得分:7)

您对expectedFailure的理解是正确的。你的问题是那些测试没有失败,他们引发了一个与失败不同的异常。

您正在寻找的装饰器是skip

答案 1 :(得分:0)

您应该查看SO question,因为这不是正确的行为。如果测试失败,则使用expectedFailure装饰器should not be counted as a failure进行测试。