在sorted(sample.items(), key=operator.itemgetter(0))
# ^^^^^^^^
样式中,我可以通过调用assertTemplateUsed
来测试页面是否使用特定模板。这很有用,例如,当Django通过模板插入值时,我不能只测试字符串相等性。
我应该如何在pytest中编写等效语句?
我一直在寻找pytest-django,但看不到怎么做。
答案 0 :(得分:7)
如评论中的phd所述,使用以下内容断言视图中实际上使用了模板文件:
response = client.get(article.get_absolute_url())
assert 'article_detail.html' in [t.name for t in response.templates]
答案 1 :(得分:0)
如果我理解清楚,你想测试Django是否正确呈现传递给模板的数据。如果是这种情况,那么概念是错误的,您应首先测试在视图中收集的数据,然后确保它调用模板。测试模板包含正确的数据将测试Django框架本身。
答案 2 :(得分:0)
要测试是否使用了特定的模板来呈现视图,您可以(甚至应该)使用pytest-django
提供的帮助程序:
import pytest
from django.test import Client
from pytest_django.asserts import assertTemplateUsed
...
def test_should_use_correct_template_to_render_a_view():
client = Client()
response = client.get('.../your-url/...')
assertTemplateUsed(response, 'template_name.html')
pytest-django
甚至在documentation中以这个确切的断言为例。