这是一个最佳实践问题。
在Django中编写测试时,在test.py中硬编码url或使用dispatch的reverse()函数检索正确的url会更好吗?
使用硬编码的网址仅以正确的方式测试 感觉 ,但与此同时,我无法想到没有使用反向的足够好的论据()。
# 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)
# 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)
答案 0 :(得分:10)
我建议使用“Option A. reverse()”,因为它可以让您将测试与安装视图的位置分离。
例如,如果'/ blog / test-blog /'成为'/ blog / test-better-url-blog /'进行测试仍然是相关的。
答案 1 :(得分:6)
我最近开始使用Twill通过django-test-utils对我的一些Django工作进行单元测试。
不使用硬编码网址和/或使用反向操作,而是使用twill.follow('Blog')
之类的内容(点击页面上的“博客”链接)。
这使您可以真正测试您网站的行为,就像网络浏览器会看到它一样,并且可以捕捉到其他方法无法捕获的内容。例如,如果您不小心从导航链接中删除了“博客”链接,则会失败。
答案 2 :(得分:1)
最好使用reverse函数按视图名称获取URL。这不仅会测试您的视图,还会确保您的视图名称保持不变。
将其视为内部API测试。您会认识到某些网址是否已损坏并被提醒您更新模板中的{%url%}标记。
答案 3 :(得分:0)
为什么不同时twill.follow('Blog')
和& reverse()
?