18👍
As phd stated in a comment, use the following to assert that a template file is actually used in a view:
response = client.get(article.get_absolute_url())
assert 'article_detail.html' in (t.name for t in response.templates)
Update: Since v3.8.0 (2020-01-14) pytest-django makes all of the assertions in Django’s TestCase available in pytest_django.asserts
. See Stan Redoute’s answer
for an example.
17👍
To assert whether given template was used to render specific view you can (and even should) use helpers provided by pytest-django
:
import pytest
from pytest_django.asserts import assertTemplateUsed
...
def test_should_use_correct_template_to_render_a_view(client):
response = client.get('.../your-url/')
assertTemplateUsed(response, 'template_name.html')
pytest-django
even uses this exact assertion as an example in documentation.
- (gcloud.app.deploy) Error Response: [7] Access Not Configured. Cloud Build has not been used in project
- How to make Django Password Reset Email Beautiful HTML?
- How to Hash Django user password in Django Rest Framework?
- Django – Form not valid but no error
0👍
If I understand clearly, you want to test if Django renders the data that you pass to the template correctly. If this is the case, then the concepts are wrong, you should test the data gathered in your view first, and then make sure it calls the template. Testing that the template contains the correct data would be testing Django framework itself.