为了账号安全,请及时绑定邮箱和手机立即绑定

Django / Factoryboy - 无法在测试中删除实例

Django / Factoryboy - 无法在测试中删除实例

鸿蒙传说 2021-12-29 10:50:17
我正在为 django 应用程序编写测试,我遇到了一个问题,即在我应该删除它们后,测试数据库中仍然存在已删除的对象。我正在使用以下工厂class CMSPageFactory(factory.DjangoModelFactory):    class Meta:        model = CMSPage    title = factory.Faker('company')    tenant = factory.SubFactory(TenantFactory)    key = factory.Faker('slug')    protected = False    in_navigation = False    active = True这是我正在运行的测试def test_example_for_so(self):  page = CMSPageFactory()  page.delete()  self.assertFalse(page)它引发了以下错误: AssertionError: <CMSPage: Fletcher LLC> is not false我一定遗漏了一些非常明显的东西,但对于我的生活,我无法弄清楚是什么。有谁知道我做错了什么?
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

你确定,page仍然存在于数据库中吗?

调用delete()django 模型实例(您的工厂应该创建)删除数据库行,但不会删除您的本地 python 表示:

https://docs.djangoproject.com/en/2.1/ref/models/instances/#django.db.models.Model.delete

为对象发出 SQL DELETE。这只会删除数据库中的对象;Python 实例仍将存在,并且其字段中仍将有数据。


查看完整回答
反对 回复 2021-12-29
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

该对象已从数据库中删除,但仍存在于内存中。从模型删除文档

为对象发出 SQL DELETE。这只会删除数据库中的对象;Python 实例仍将存在,并且其字段中仍将有数据。此方法返回删除的对象数和包含每个对象类型删除数的字典

你在测试中可以做的是获取id然后尝试从数据库中获取对象,或者对数据库中的对象进行计数并期望为0。


查看完整回答
反对 回复 2021-12-29
  • 2 回答
  • 0 关注
  • 265 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号