我正在通过Django教程,并在教程5>中遇到了错误。 '测试详细信息视图'
当我跑步时:
if(ret == 0)
{
//child process
}
else
{
//parent process
}
在终端,我收到了这条消息:
python manage.py test polls
这是我在tests.py中与'使用过去的问题测试详细视图'相关的代码(它是后面的函数)。
Creating test database for alias 'default'...
.F.......
======================================================================
FAIL: test_detail_view_with_a_past_question (polls.tests.QuestionIndexDetailTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/theoford/Documents/python/04_django_intro/mysite/polls/tests.py", line 115, in test_detail_view_with_a_past_question
status_code=200)
File "/Library/Python/2.7/site-packages/django/test/testcases.py", line 398, in assertContains
msg_prefix + "Couldn't find %s in response" % text_repr)
AssertionError: Couldn't find 'Past Question.' in response
----------------------------------------------------------------------
Ran 9 tests in 0.030s
FAILED (failures=1)
Destroying test database for alias 'default'...
我是Stackoverflow社区的新手,所以如果这个问题的格式和表达不正确,不完整或不恰当,我会道歉,但是对于推进这个问题的任何帮助都将非常感激。
views.py:
class QuestionIndexDetailTests(TestCase):
def test_detail_view_with_a_future_question(self):
"""
The detail view of a question with a pub_date in the future should
return a 404 not found.
"""
future_question = create_question(question_text='Future question.',
days=5)
response = self.client.get(reverse('polls:detail',
args=(future_question.id,)))
self.assertEqual(response.status_code, 404)
def test_detail_view_with_a_past_question(self):
"""
The detail view of a question with a pub_date in the past should
display the question's text.
"""
past_question = create_question(question_text='Past Question.',
days=-5)
response = self.client.get(reverse('polls:detail',
args=(past_question.id,)))
self.assertContains(response, past_question.question_text,
status_code=200)
答案 0 :(得分:0)
您想查看过去的问题。'在response.content
,而不是response
。将test_detail_view_with_a_past_question
的最后一行更改为:
self.assertContains(response.content, past_question.question_text,
status_code=200)
答案 1 :(得分:0)
就我而言,测试用例以两种方式通过:
通过将属性 pk_url_kwargs 添加到 views.py 中的 DetailView,其值为 'question_id'
pk_url_kwargs = 'question_id'
或
通过将 urls.py 中的“question_id”更改为“pk”
path('
原因:
据我所知,通用 DetailView 默认根据名为 'pk' 或 'slug' 的参数查找对象——(选择一个主键等于名为 'pk' 的变量值的对象) , 但在教程中 urls.py 额外的整数参数被命名为 'question_id' 所以我们需要更改 views.py 中的 pk_url_kwargs 或 urls.py 中的参数名称。