gpt4 book ai didi

python - 运行py.test时如何保留数据库数据?

转载 作者:行者123 更新时间:2023-12-04 16:45:03 26 4
gpt4 key购买 nike

我想测试我的查询数据库功能。

import pytest
from account_system.action import my_action
from account_system.models import MyUser

@pytest.mark.django_db
def test_ok_profile():
req = FakeRequest()
email = 'tester@example.com'
MyUser.objects.create_user(
email=email,
password="example",
)
# query MyUser table and return result
result = my_action.get_profile(email)
assert result == 'success'

但是失败了。

>       assert result == 'success'
E assert None == 'success'

函数没有从数据库中得到任何结果。

我检查了数据库数据,没有看到任何记录。(例如用户 tester@example.com)

如何重写我的测试代码?

或者如何将数据保存在数据库中?

谢谢,

最佳答案

这就是数据库测试的工作方式。当您设置 django_db 时,pytest 将在使用后回滚您的数据。但是如果你想在几个测试中使用相同的数据,你应该看看pytest.fixtures 和 factory_boy 喜欢:

import factory

class UserFactory(factory.DjangoModelFactory):
class Meta:
model = User

@pytest.fixture
def user():
return UserFactory(email = "bla@bla.com", password = "blabla")

现在您将此引用应用到您的测试代码中:

test_test_ok_profile(user):
assert user.email = "bla@bla.com"

关于python - 运行py.test时如何保留数据库数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35075734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com