T. *_*one 16 django django-testing
这是一个最佳实践问题.
在Django中编写测试时,在test.py中硬编码url或使用dispatch的reverse()函数检索正确的url会更好吗?
使用硬编码的网址进行测试只是感觉像是正确的方式,但同时我想不出一个不使用reverse()的足够好的论据.
# Data has already been loaded through a fixture
def test_view_blog(self):
url = reverse('blog', kwargs={'blog_slug':'test-blog'})
response = self.client.get(url)
self.failUnlessEqual(response.status_code, 200)
Run Code Online (Sandbox Code Playgroud)
# Data has already been loaded through a fixture
def test_view_blog(self):
url = '/blog/test-blog/'
response = self.client.get(url)
self.failUnlessEqual(response.status_code, 200)
Run Code Online (Sandbox Code Playgroud)
yml*_*yml 10
我建议使用"Option A. reverse()",因为它使您可以将测试与安装视图的位置分离.
例如,如果'/ blog/test-blog /'成为'/ blog/test-better-url-blog /'进行测试仍然是相关的.
我最近开始使用twill通过django-test-utils对我的一些Django工作进行单元测试.
而不是硬编码URL和/或使用反向我使用的东西twill.follow('Blog')(如按照页面上的"博客"链接).
这使您可以真正测试网站的行为,就像Web浏览器会看到它一样,并且可以捕获其他方法无法捕获的内容.例如,如果您不小心从导航链接中删除了"博客"链接,则会失败.