因此,我在Django中返回一个失败测试,当时将预期与实际html与表单输入进行比较,因此我打印出结果并意识到差异是由我引起的相当简单的行,{% csrf_token %}如下所示:
<input type='hidden' name='csrfmiddlewaretoken' value='hrPLKVOlhAIXmxcHI4XaFjqgEAMCTfUa' />
Run Code Online (Sandbox Code Playgroud)
所以,我希望得到一个简单的答案,但我无法找到它:如何渲染csrf_token的结果用于测试?
这是测试设置和失败:
def test_home_page_returns_correct_html_with_POST(self):
request = HttpRequest()
request.method = 'POST'
request.POST['item_text'] = 'A new list item'
response = home_page(request)
self.assertIn('A new list item', response.content.decode())
expected_html = render_to_string(
'home.html',
{'new_item_text': 'A new list item'},
******this is where I'm hoping for a simple one-line mapping******
)
self.assertEqual(response.content.decode(), expected_html)
Run Code Online (Sandbox Code Playgroud)
这是来自views.py的渲染:
def home_page(request):
return render(request, 'home.html', {
'new_item_text': request.POST.get('item_text'),
})
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,这是测试失败 python manage.py test
FAIL: test_home_page_returns_correct_html_with_POST (lists.tests.HomePageTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File …Run Code Online (Sandbox Code Playgroud)