python - Pytest-django 事务未物理提交到数据库
问题描述
有一个conftest.py
文件允许我使用我的自定义事务夹具fake_user
@pytest.mark.django_db(transaction=True)
@pytest.fixture
def fake_user():
user = getattr(fake_user, 'user', None)
if user is None:
user_data = dict(
id=1,
is_superuser=False,
is_staff=False,
email='foo@barmail.com',
username='foobaruser',
password='passwordmaster',
date_joined=timezone.now()
)
user = User.objects.create(
**user_data
)
user.save()
# pdb.set_trace()
fake_user.user = user
yield user
不知何故,如果我用 pdb.set_trace() 调试上面的代码,我得到User.objects.all()
等于<QuerySet [<User: foobaruser>]>
. 但是没有任何真正的测试数据库记录。因此,当在另一个高级函数中查询“用户”对象时,例如“GraphQL”或 REST 调用,我得到“用户”表绝对是空的。如何启用真正的测试数据库事务?为什么 pytest 不允许任何物理记录或阻止它们被插入的原因?
解决方案
Pytest 在运行之间刷新测试数据库;添加--reuse-db
到您的选项以保留数据。
推荐阅读
- c# - 如何防止一个类多次具有相同类型的属性?
- javascript - Discord.js:如何确保机器人不会从列表中选择两个相同的单词
- swift - SplitViewController 在启动时总是显示 DetailViewController
- python - 我们如何编码时间戳并将 DBSCAN 集群的集群保存为 json 和 csv?
- visual-studio - 如何构建应用来调用 Power BI 刷新历史记录?
- azure - 将私有 Azure Docker Registry 的 Pull-Only 权限授予第三方的最安全方法
- json-server - 如何配置 json-server 以搜索与我的 API 相同的内容?
- ios - 在核心数据中存储类实例(例如 MKMapItem)的正确方法是什么?(快速用户界面)
- javascript - 如何根据另一个数组过滤一个数组?
- data-structures - 为什么高度为“h”的二叉搜索树中的最大节点数等于 2^(h+1) - 1?