python - 如何在 Django 中测试查询集
问题描述
我对 Django 很陌生,需要帮助来测试我的视图模块。现在视图只返回数据库中的所有对象:
def get_queryset(self):
return people.objects.all()
我想测试视图是否返回所有对象。我知道我应该使用 assertQuerysetEqual 并且我已经阅读过它,但仍然不确定如何实现它,因为我对文档了解不多。如果有人可以展示一些示例或解释,将不胜感激。
解决方案
考虑到您正在使用基于类的视图。您可以执行以下步骤来测试get_queryset
方法。测试其他功能的过程应该类似。
- 使用来自 django 的请求工厂创建一个请求对象。
from django.test import RequestFactory
request = RequestFactory().get('/view-path')
- 创建视图实例
view = YourView()
- 附加查看请求
view.request = request
- 调用您的方法并比较结果。
qs = view.get_queryset()
整个测试用例看起来像这样
def test_get_queryset(self):
request = RequestFactory().get('/view-path')
view = YourView()
view.request = request
qs = view.get_queryset()
self.assertQuerysetEqual(qs, people.objects.all())
推荐阅读
- javascript - Vue Silentbox无法设置未定义的属性(设置'$silentbox')
- python - 如何单击硒(Python)中弹出窗口内的按钮?
- php - 将表单数据/值从 html 发送到初学者电子邮件的最佳方式?
- batch-file - windows批处理脚本中的子字符串操作
- javascript - 从 JS 更改 css 变量的值会导致奇怪的行为
- java - Java - 识别发送按键的键盘
- visual-studio-code - Plotly express 在 vscode jupyter 中不显示图像
- node.js - MongoDB ObjectId(string) 生成一个新的 Id 而不是代表 id 的给定字符串
- c++ - 成员函数特化中的循环依赖......“特化之前的实例化”
- sql - PostgreSQL全文搜索没有找到它应该找到的一些单词