
class PreSaveTests(TestCase): def test_pre_save_hook(self): person = Person(name="Joe") person.save() person2 = Person.objects.get(pk = person.pk) # Confirm that the pre_save hook ran. # The hook sets person.is_cool to True. self.assertEqual(person2.is_cool,True)
这很好用,但看起来很难看.
真正丑陋的部分是person和person2是同一个数据库对象.唯一的区别是person2是从数据库中检索出来的.
解决方法 你在考试中所做的一切都很好.但是,我认为你可以简化/改进它.我认为你应该使用工厂(你可以使用FactoryBoy).这样,在模型上添加/删除必填字段时,您无需更新测试.此外,您可以从测试中删除不相关的信息.在这种情况下,人名是Joe的事实完全无关紧要.
你可以替换:
person = Person(name="Joe")person.save()
有:
person = PersonFactory.create()
正如DanIEl所说,您不需要重新加载Person实例.所以你不必这样做:
person2 = Person.objects.get(pk = person.pk)
最后,一个小提示,你可以使用assertTrue而不是assertEquals(某事,True):
class PreSaveTests(TestCase): def test_pre_save_hook(self): person = PersonFactory.create() self.assertTrue(person.is_cool)总结
以上是内存溢出为你收集整理的在Django测试中,我应该如何保存数据库对象然后从数据库中检索它?全部内容,希望文章能够帮你解决在Django测试中,我应该如何保存数据库对象然后从数据库中检索它?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)