python - Pytest 和 Django,创建模块范围的固定装置的正确方法
问题描述
使用 django 测试数据库的 pytest 模块范围的固定装置让我们感到困惑。我们想要一个fixture,它在数据库中创建一个条目,每个测试模块一次。
这有效,但它非常笨重:
import pytest
@pytest.fixture(scope='module')
def site(django_db_setup, django_db_blocker):
with django_db_blocker.unblock():
address = models.Address.create(..)
site = models.Site.create(address=address, ..)
yield site
with django_db_blocker.unblock():
site.delete()
address.delete()
我们注意到这django_db_setup
是必需的,因为如果这个夹具是第一个调用的,则不会设置测试数据库,并且夹具将在非测试数据库中创建!
对于具有多于一两个相关模型的复杂对象,夹具变得非常难看。
有一个更好的方法吗?
解决方案
推荐阅读
- git - 使用 Jenkins 在 Pipeline 中存储的凭据作为 git push 的 yml
- python - 如何在 Python 中安装 GTK 4
- laravel - 路线 laravel 未定义
- python - python请求模块请求参数编码的url与预期的url不同
- reactjs - 如何不在模式窗口中打开 PayPal,而是在 React 的新选项卡中打开
- spring-boot - 使用 Feign 构建器请求不会将 trace-id、span-id 发送到子客户端,但使用 rest 模板会显示子客户端上的所有标头
- r - 如何将数据仅连接到 R 中 {data.table} 的第一个匹配行
- python - 从库存中获取评论的服务器
- sql - 在父表上存储 1:N 关系中的特定列
- ios - 有没有办法将动态框架放入 iOS 中的另一个框架中?