在 Django 中测试页面内容中的链接
Testing for links in a page content in Django
美好的一天!
所以回到我的问题,
我有一个带有一些链接的模板,我想断言它们确实存在于我的页面中。
我的 html 部分,
<section>
<p>Welcome to open radio. We help you get on air!</p>
<p><a href="{% url 'userlogin' %}">Login</a></p>
<p><a href="{% url 'liststations' %}">View all our stations</a></p>
<p><a href="{% url 'userregistration' %}">SignUp!</a></p>
</section>
我现在测试,
response = self.client.get(reverse("home"))
assert reverse("userlogin") in response.content
assert reverse("liststations") in response.content
assert reverse("userregistration") in response.content
我的测试通过了,而且我明白我并不是真正针对此处的链接断言,而是针对 URL 字符串。我如何专门测试链接?
Django 自己的测试套件使用它来断言某个 url 在响应中:
response = self.client.get(reverse("home"))
self.assertContains(response, '<a href="%s">Login</a>' % reverse("userlogin"), html=True)
...
self.assertContains
既处理了response
是响应对象,又处理了两边都是html只需要等价,不一定等价。
这是假设您正在使用 django.test.SimpleTestCase
(的子类)。
美好的一天!
所以回到我的问题,
我有一个带有一些链接的模板,我想断言它们确实存在于我的页面中。
我的 html 部分,
<section>
<p>Welcome to open radio. We help you get on air!</p>
<p><a href="{% url 'userlogin' %}">Login</a></p>
<p><a href="{% url 'liststations' %}">View all our stations</a></p>
<p><a href="{% url 'userregistration' %}">SignUp!</a></p>
</section>
我现在测试,
response = self.client.get(reverse("home"))
assert reverse("userlogin") in response.content
assert reverse("liststations") in response.content
assert reverse("userregistration") in response.content
我的测试通过了,而且我明白我并不是真正针对此处的链接断言,而是针对 URL 字符串。我如何专门测试链接?
Django 自己的测试套件使用它来断言某个 url 在响应中:
response = self.client.get(reverse("home"))
self.assertContains(response, '<a href="%s">Login</a>' % reverse("userlogin"), html=True)
...
self.assertContains
既处理了response
是响应对象,又处理了两边都是html只需要等价,不一定等价。
这是假设您正在使用 django.test.SimpleTestCase
(的子类)。