【发布时间】:2019-06-08 23:27:44
【问题描述】:
假设我正在 Django 应用程序中测试 RSS 提要视图,我应该这样做吗?
def test_some_view(...):
...
requested_url = reverse("personal_feed", args=[some_profile.auth_token])
resp = client.get(requested_url, follow=True)
...
assert dummy_object.title in str(resp.content)
reverse-ing 然后将其传递给client.get()是正确的测试方法吗?我认为它比简单地.get()URL 更干燥,更面向未来。我应该以这种方式断言
dummy_object在响应中吗?我在这里使用响应对象的
str表示进行测试。与使用selenium相比,何时执行此操作是一个好习惯?我知道它可以更容易地验证所述obj或属性(如dummy_object.title)是否封装在H1标记中。另一方面,如果我不关心 如何 表示 obj,那么像上面那样做会更快。
【问题讨论】:
-
1.使用
reverse是 IMO 正确的方法 - 您不是针对 URL 进行测试,而是针对按名称访问的 Django 视图进行测试。 2. AFAIK 内容是原始字节串;它应该首先使用resp.charset解码。通常,我只在单元测试中测试 HTML 响应的状态码;内容最好在 e2e 测试中使用selenium进行测试,但对于简单的页面,您的检查也应该足够了。 -
@hoefling - 你能否扩展
resp.charset以及selenium在这种情况下有何不同?我知道 selenium 的用途,并且它可以使测试涵盖 HTML 等...,但如果我只想测试某些obj是否在某些部分/QuerySet 中,这不节省时间与 @ 987654337@? (也许将此添加为答案,以便我可以标记它) -
啊,我没有仔细阅读您的问题 - 事实上,如果是 RSS 提要,我的评论毫无意义,因为它不是
text/html回复 :-) -
@hoefling - 不过,关于何时使用它与
selenium的一些见解将是黄金。我应该问一个不同的问题吗?还是这里合适? -
太棒了。我会稍微修改一下问题。
标签: python django pytest django-testing pytest-django