django - 在不访问数据库的情况下使用“登录用户”测试视图
问题描述
我已经编写了一些任意代码来测试一个有和没有登录用户的视图类。但是,在这样做的同时,我必须创建一个访问数据库的用户。为了遵循 TDD 单元测试的良好实践,我会尽量避免访问数据库,但我不知道如何
我曾短暂尝试修补不同的模块,但我还没有弄清楚如何或修补什么
这是我今天使用的解决方案:
@pytest.mark.django_db
class TestTreaterProfile:
"""
get with anonymous
get with logged-in user
"""
[...]
def test_get_with_logged_in_user(self):
status_code = [200]
view_class = ClientProfile
client = Client()
user = User.objects.create_user("user", "my@email.com", "password")
client.force_login(user)
# create request and retrieve response
request = RequestFactory().get("/")
request.user = user
response = view_class.as_view()(request, *[], **{})
assert response.status_code in status_code, "Should have status_code 200 - OK"
该代码有效,我只想对其进行修改,使其不必访问数据库。
在此先感谢您的帮助!
解决方案
您可以在测试的setUp
方法(链接)中创建用户,这样您就不会污染您的实际测试方法(因为这是我假设您试图避免的)。仅供参考:这仍然会影响数据库。
class TestTreaterProfile:
...
def setUp(self):
self.user = User.objects.create_user("user", "my@email.com", "password")
...
def test_get_with_logged_in_user(self):
...
request.user = self.user
...
推荐阅读
- arrays - 如何在末尾添加扩展名
- javascript - 在 React 中如何将标准 html 作为组件传递?
- machine-learning - 这是我的训练和验证准确性代码有问题吗?还是数据?
- artificial-intelligence - 无人机SDK支持自由飞行控制
- node.js - @conduitvc/dynamodb-emulator@0.5.3 安装错误
- docker - Docker-compose 卷不保存 Keycloak 的容器状态
- php - 检查外部文件数组php中是否存在值
- python - PYTHON:试图获取目录中的每个 .sql 文件作为输入。所以我可以打开()然后读取()每个
- powershell - Powershell:在脚本中的 PSFTP 之后使用 send-mailmessage
- python - 好友个人资料页面