如何在RESTAPI的java/testng测试中组织数据

如何在RESTAPI的java/testng测试中组织数据,java,rest,testng,data-driven-tests,Java,Rest,Testng,Data Driven Tests,我刚刚开始在一个新的地方工作,在那里我需要使用不同的路径/查询参数来测试rest调用(目前为GET),我需要根据场景传递这些参数。其中一些参数可能在数据库中,但我不能使用它,因为只有特定的组合是有效的。因此,数据必须驻留在测试项目中。在以前的一家公司,我们使用数据提供商和电子表格。但这里的数据太多,电子表格的版本也不好。有什么办法可以解决这个问题吗?任何一般/特定的帮助都将不胜感激。我建议创建动态准备数据的构建器(可能是随机的),如下所示: Dog dog = Dog.random(); 该方

我刚刚开始在一个新的地方工作,在那里我需要使用不同的路径/查询参数来测试rest调用(目前为GET),我需要根据场景传递这些参数。其中一些参数可能在数据库中,但我不能使用它,因为只有特定的组合是有效的。因此,数据必须驻留在测试项目中。在以前的一家公司,我们使用数据提供商和电子表格。但这里的数据太多,电子表格的版本也不好。有什么办法可以解决这个问题吗?任何一般/特定的帮助都将不胜感激。

我建议创建动态准备数据的构建器(可能是随机的),如下所示:

Dog dog = Dog.random();
该方法必须创建有效但随机的狗,例如

public static Dog random() {
    Dog dog = new Dog();
    dog.setName(english(10));
    if(    bool()    ) dog.setOwner(Owner.random());//50% chance to have owner
    if(dog.hasOwner()) dog.setAddress(Address.random());
    return dog;
}
想在一个特定的测试中测试特定的东西吗?您可以使用更具体的内容覆盖随机值:

Dog dog = Dog.createDogOnLeash();
dog.setAddress(null);
这样,您可以随时间测试许多组合。编写的测试越多,每次运行测试的组合就越多。有关更多信息,请参阅


数据不必随机化,但它有助于简化事情。否则,您将被迫将大量硬编码数据放在测试中(甚至更糟,放在单独的文件中),这将更难维护

这很有趣。。。我们将保留更多建议的问题,但同时将探讨上述问题。