如何在django中断言F在ABCDEF中只有一次

时间:2012-02-06 16:49:09

标签: django unit-testing

我怎么断言F在ABCDEF中只出现一次?

我使用了assertEqual但django声明:

Traceback (most recent call last):
  File "/Users/jorrit/virtualenvs/voetbabbel/voetbabbel/apps/mass_mailer/tests.py", line 61, in test_create_mailing_list
    self.assertContains(p.user.email,"@", 1, status_code=200)
  File "/Library/Python/2.7/site-packages/django/test/testcases.py", line 419, in assertContains
    self.assertEqual(response.status_code, status_code,
AttributeError: 'unicode' object has no attribute 'status_code'

和我在测试中的代码:

self.assertContains(p.user.email,"@", 1)

3 个答案:

答案 0 :(得分:2)

assertContains不适用于测试随机字符串。它用于测试视图中的响应 - 特别是响应包含一些文本。如果您没有使用TestClient并针对其中一个视图的响应进行测试,则无法使用它。

答案 1 :(得分:2)

结帐assertEqual。这就是Django testing docs测试这种事情的方法。以这种方式使用assertEqual可以为您提供assertTrue失败时的更多反馈。

self.assertEqual(p.user.email.count('@'), 1)

答案 2 :(得分:1)

正如克里斯所说,这不是assertContains所针对的。您可以使用标准断言之一:

self.assertTrue(p.user.email.count('@') == 1)