在测试数据库中保留大型数据集而不重新加载
我使用黄瓜来运行集成测试。
我有一个非常大(30,000+ 条记录)的标准设置用于测试。
如何将其保留在 test.sqlite3 数据库中而不重新加载它?
I use cucumber to run integration tests.
I have a very large (30,000+ record) stardard setup for testing.
How can I leave that in the test.sqlite3 database without re-loading it ever?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
测试运行完成后,Cucumber 不会清除数据库,除非您在
env.rb
文件中的After
块中添加一些代码来执行此操作。如果数据从未改变,则将其加载到数据库一次,并假设运行 Cucumber 时它就在那里。如果您在场景中更改数据库中的某些数据,请确保使用事务固定装置 当场景结束时,这些更改将被回滚。
Cucumber will not clean out the database once the test run completes unless you put some code to do it in an
After
block in yourenv.rb
file to do this.If the data never changes then load it into the db once and assume it is there when you run cucumber. If you change some data in the db in your scenarios then make sure that you use transactional fixtures and those changes will be rolled back when the scenario finishes.
SQLite 数据库只是一个文件。难道您不能在开始测试之前复制所需的数据库文件(预先填充您想要的数据)吗?
The SQLite database is just a file. Couldn't you just copy over the desired database file (prepopulated with the data you want) prior to starting your tests?
好的,根据您所说的,您可以这样做吗:
当然,这涉及到使用像 Factory Girl 这样的模型来创建诗句。这可能吗?
OK, based on what you said, can you do this:
Of course, that rather involves creating the verses from a model using something like Factory Girl. Would that be possible?