我有一个显示message
的主页模板,如果提供的话:
base.html
<main role="main">
<div class="container">
{% if message %}
<br>
<span class="text-success">{{ message }}</span>
<br><br>
{% endif %}
{% block content %}
{% endblock %}
</div>
</main>
home.html
{% extends 'base.html' %}
{% block content %}
<span>Hello</span>
{% endblock %}
views.py
def home(request):
params = {}
if 'message' in request.session and request.session['message']:
params['message'] = request.session['message']
del request.session['message']
return render(request, 'products/home.html', params)
并测试无法执行的代码:
class HomeTests(TestCase):
def test_home_shows_message_if_session_param_is_provided(self):
self.client.session['message'] = 'test'
self.client.session.save()
response = self.client.get(reverse('home'))
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'products/home.html')
self.assertContains(response, 'test')
我收到此错误
AssertionError:假不是真的:找不到响应的“测试”。
那是因为request.session
不包含message
参数,所以我以错误的方式设置了它。请帮助我找到正确的一个。我确定我的代码有效,但是如何正确测试呢?