无法在Django测试中测试会话参数

时间:2019-06-21 20:13:56

标签: python django python-3.x unit-testing

我有一个显示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参数,所以我以错误的方式设置了它。请帮助我找到正确的一个。我确定我的代码有效,但是如何正确测试呢?

0 个答案:

没有答案