首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能为django项目创建自己的测试数据库?

为什么我不能为django项目创建自己的测试数据库?
EN

Stack Overflow用户
提问于 2017-01-11 22:02:34
回答 1查看 428关注 0票数 1

我目前正在决定如何在django项目中使用哪些测试包,特别是如何在运行测试之前填充数据。我调查了:

  1. and :许多人似乎反对这样做,因为修改JSON可能很困难,也很难维护。
  2. 工厂男孩:我的项目有很多层次结构,所以我觉得从层次结构中非常低的模型创建对象是非常慢的。

我脑海中的想法是创建一个数据库,我将始终对其运行测试。既然我知道它中有什么数据,那么它难道不应该在没有JSON麻烦的情况下与固定装置一样工作吗?因为我没有通过我的研究看到这个想法,我认为这是一个坏主意。为什么这是个坏主意?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-11 22:15:38

你真的和工厂男孩一起测试过吗?在我的经验中,使用内存中的sqlite数据库非常快速,并且非常方便地使用层次结构。

您的数据库思想与fixtures大致相同--您可以通过运行dumpdata管理命令来使用数据库来创建JSON,并在数据库中而不是在JSON文件中维护您的测试数据。

与测试数据库相比,更喜欢工厂男孩的原因如下:

  • 数据是在测试中生成的,因此立即可以清楚地看到发生了什么以及哪些字段与测试相关。
  • 这些数据伴随着测试代码,没有额外的文件或数据库转储来管理。
  • 工厂男孩非常擅长层次结构(“我希望这个实例的实例中所有字段都具有默认值,除了这个字段在层次结构中向上六步”-- instance = InstanceFactory.build(series__study__patient__archive__project__algorithm_type='foo'))
  • 有时候,一个对象根本不需要保存到数据库中才能测试它的方法,在这种情况下,工厂男孩的.build()非常快。
  • 与其为当前的测试选择有趣的边框,您还会试图重复使用数据库中已有的内容,而不会发现bug。
  • 可能由于唯一性约束,您需要测试的不同值不能同时存在于数据库中。

可能还有更多,但我需要睡觉。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41601507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档