在MongoDB中设置伪造的数据进行testing

我们有一个项目,我们需要创build一个虚假的数据库和假数据进行functiontesting。 最初,我们开始使用mongoose创build实体的脚本,初始化它们并保存它们。

var StudentA = new Student(); StudentA.name = "Bob"; StudentA.surname = "Marley"; StudentA.save(); 

随着应用程序的增长和文件之间的关系增加,这个脚本变得绝对乱七八糟。 现在它成为了我们投资应用程序开发的瓶颈。

问题是,有没有更好的方法来做到这一点? 例如一个以更结构化的方式填充数据库的库? 或者,我们应该像csv文件parsing文件,然后推到mongo?

问题在于mongodb,但它可以推广到任何需要填充假数据的NO-SQL数据库。 (对于RDBMS来说,使用SQL语法更简单)

您可以尝试写入json文件而不是代码,并使用mongoimport来重新创build数据库。 这比维护非常冗长和重复的代码更容易。

我同意上面的解决scheme,并认为最好的方法是:

  1. 使用库工具生成假信息。
  2. 将假信息转换成json文件。
  3. 使用mongoimport将其上传到mongo。

我发现那里有一些库可以让你生成免费的假数据,如Faker.js(如果你熟悉node.js和js)或者你可以在这里使用免费的Java版本的Faker: https: //github.com/blocoio/faker

我也在这里find了一个付费的解决scheme: https : //www.mockaroo.com/,但是不知道为什么有人愿意为此付钱,因为这很容易生成假数据 – 这是一步一步的指导。

将faker java库和json编写器导入到你的项目中(我使用gradle,所以这里是gradle代码):

  repositories { maven { url 'https://jitpack.io' } } dependencies { compile 'com.github.blocoio:faker:1.0.1' compile 'com.googlecode.json-simple:json-simple:1.1.1' } 

使用下面的java代码来生成尽可能多的假对象,在这里我使用一个循环来生成3个对象,并将其保存到json.file中。

 public class FakerTest { static FileWriter file; public static void main(String[] args) { try { file = new FileWriter("c:\\<Your Location>\\test.json"); //try opening the file for (int i = 0; i < 3; i ++) { Faker faker = new Faker(); JSONObject obj = new JSONObject(); obj.put("Name", faker.name.firstName()); obj.put("address",faker.address.streetAddress()); obj.put("email",faker.internet.email()); file.write(obj.toJSONString()); } file.flush(); file.close(); } catch (IOException e) { e.printStackTrace(); } } } 

json文件的结果:

{“address”:“790 Murphy Vista”,“email”:“willa@schmittjenkinsandabernathy.net”,“Name”:“Christop”} {“address”:“7706 Larkin River”,“email”:“martin_carter @ ryanbartellandeffertz .com“,”Name“:”Braeden“} {”address“:”1893 Jamarcus Rest“,”email“:”cassidy_kris@ziemeankundingandblick.com“,”Name“:”Marlee“}

现在,用mongoimport上传它。

faker库会让你生成很多字段,请参考:

https://github.com/stympy/faker/blob/master/README.md

下载由MongoDB提供的这个json文件。

你可以用mongoimport方法input:

 mongoimport --db testDB --collection testCollection --file test.json 

Mongoimport的更多细节可以在这里find。

我创build了一个开源工具来生成随机的BSON文档,并将它们插入到Mongodb中。 它支持所有BSONtypes (ObjectId,ISODate,二进制数据等)
文档是根据configuration文件生成的,因此您可以指定所需的字段及其types。

它还支持多个收集,多个数据库写作,分片收集,索引build设之间的参考…

它可以在这里find: github.com/feliixx/mgodatagen