我创建了两个java类TestA.java和TestB。java使用restAssured,其中每个类都从TestA读取json。json和testB。json并向endpointuri.TestA发出请求。java返回一个带有标记“customerID”的json响应,该标记将作为TestB的一个标记的输入。当我使用“TestB.java”customerID发布请求时,必须从TestB中选择。我的代码看起来怎么样?有什么想法吗?
我的代码:
TestA.java
String requestBody = generateString("CreateCustomer.json");
RestAssured.baseURI = "https://localhost:8080";
Response res = given().contentType(ContentType.JSON)
.header("Content-Type", "application/json").header("checkXML", "N").body(requestBody).when()
.post("/restservices/customerHierarchy/customers").then().assertThat()
.statusCode(201).and().body("transactionDetails.statusMessage", equalTo("Success")).and().log().all()
.extract().response();
//converts response to string
String respose = res.asString();
JsonPath jsonRes = new JsonPath(respose);
CustomerID = jsonRes.getString("customerNodeDetails.customerId");
TestA.java response
{
"customerNodeDetails": {
"customerId": "81263"
},
现在我想把这个客户ID
作为测试B.json
或测试B
的输入.java这是动态的。
TestB.json
"hierarchyNodeDetails": {
"**customerId**":"",
"accountNumber": "",
"startDate": "",
}
< code>TestA.java和< code>TestB.java看起来几乎一样,除了post uri
提前谢谢。
这取决于您如何分发类:
> < li>
如果您想在单个类中编写A和B的测试。声明一个Response/String类型的局部变量,然后将客户ID存储在该变量中。变量的作用域在所有的TestNG方法中都是有效的。您可以从本地变量为B.json设置客户ID。
public class Test{
String _cust_id;
@Test
public void test_A(){
// ceremony for getting customer id
_cust_id = jsonRes.getString("customerNodeDetails.customerId");
}
@Test
public void test_B(){
// write value of customer id using the variable _cust_id
}}
您可以尝试这种方法,但建议将数据部分分离为dataProvider类。
> < li>
如果您希望A和B有不同的类,请使用ITestContext将值从一个类传递到另一个类。
public class A{
@Test
public void test1(ITestContext context){
context.setAttribute("key", "value");
}
}
public class B{
@Test
public void test2(ITestContext context){
String _attribute = context.getAttribute(key);
}
}
优雅的方法可以是,使用dataProvider进行B类测试,在那里执行从a类测试获取customerID的仪式。
public class DataB{
@DataProvider
public static Object[][] _test_data_for_b(){
// get the customerID
// create the json for class B
// return the json required for class B test
// All these could be achieved as everything has a common scope
}}
public class B{
@Test(dataProvider = "_test_data_for_b", dataProviderClass = DataB.class)
public void test_B(String _obj){
// perform the testing
}}
我发送JSON文件(现在从邮递员)的身体是这样的: 控制器上的方法是: 我犯了个错误- 如何解决这个问题?
我目前面临一个相当奇怪的问题,因为它发生在同一个Eclipse项目中,但仅在某些计算机上(安装Eclipse IDE)。到目前为止,问题发生在安装了eclipse版本2019-12(4.14.0)和eclipse fortune(非常旧,遗憾的是我不知道确切版本)的计算机上。我的笔记本电脑(2020-03(4.15.0))和另一台2019-06(4.12.0)版本的笔记本电脑上不会出现这种情况。关
问题内容: 我有一个项目,其中有两个使用sqlline的单独模块和另一个依赖jline的库(例如OtherLib)。但是在不同版本上。 Module1使用Sqlline取决于 jline 2.10 Module2使用OtherLib取决于 jline 0.9.94 并且这两个版本不兼容。因此,我设置了类路径,以便Module1首先在 $ HOME / lib / module1 文件夹中搜索,而M
我只想为这样的json发布json请求(使用restassured): Im定义基本uri,并尝试使用hashmap: 当然是“红色”,因为尝试将整数作为字符串。 我正在换成字符串。valueOf()用于我的1和111个数字, 然后使用smth like成功发布请求 但响应不正确(与所需的json相比): 此处有2点: 那么,问题是:在这种情况下,以正确的顺序并使用id和usedId的int值正确
问题内容: 我正在使用logback / slf4j进行日志记录。我想解析我的日志文件以分析一些数据,所以我不想解析一个很大的大文件(主要由调试语句组成),而是要有两个记录器实例,每个实例都记录到一个单独的文件中。一种用于分析,另一种用于通用日志记录。有谁知道使用Logback或其他任何记录器是否可行? 问题答案: 很可能在logback中执行类似的操作。这是一个示例配置: 然后,您将设置两个单独
问题内容: $ resource非常棒,它提供了非常方便的方式来处理Web服务。如果必须在不同的URL上执行GET和POST怎么办? 例如,GET URL是, 而POST URL 没有任何参数 问题答案: 您应该能够将URL作为参数公开。我能够做到这一点: 然后,您可以覆盖通话中的URL 。 在我的简短测试中发现的一个警告是,如果我将URL字符串包含在内,则该字符串将无法正常工作。我没有收到错误消