使用 java 在 SOAP UI 中创建 Rest 项目
Create Rest Project in SOAP UI using java
我能够创建 SOAP 项目并执行关联的测试用例。
SOAP 代码片段:
public String executeSoapTestcase(final SoapUIData soapUIData) throws Exception {
SoapUI.getSettings().setBoolean(HttpSettings.RESPONSE_COMPRESSION, false);
final WsdlProject project = new WsdlProject();
String response = null;
final WsdlInterface[] ifaceArray = WsdlInterfaceFactory.importWsdl(project, soapUIData.getWsdlPath(), true);
if (ifaceArray == null) {
throw new IllegalArgumentException(
"inside SoapUIService.executeTestcase Binding not found in the specified WSDL");
}
final WsdlInterface wsdlInterface = ifaceArray[0];
Operation[] wsdlOperations = wsdlInterface.getAllOperations();
if (wsdlOperations == null) {
throw new IllegalArgumentException(
"inside SoapUIService.executeTestcase Operations not found in the specified WSDL");
}
wsdlInterface.changeEndpoint(wsdlInterface.getEndpoints()[0], soapUIData.getEndpoint());
final WsdlOperation operation = (WsdlOperation) wsdlOperations[0];
final WsdlRequest request = operation.addNewRequest("addRequest");
request.setRequestContent(soapUIData.getXmlRequest());
final WsdlSubmit<?> wsdlSubmit = (WsdlSubmit<?>) request.submit(new WsdlSubmitContext(request), false);
final WsdlResponse wsdlResponse = (WsdlResponse) wsdlSubmit.getResponse();
log.info("inside utm-soapui-service SoapUIService.executeTestcase Submit status : " + wsdlSubmit.getStatus());
if (wsdlResponse != null) {
response = wsdlResponse.getContentAsString();
}
return response;
}
我想为 REST 项目做同样的事情:我想使用 wadl 创建 Rest 项目并执行测试用例。
public void executeRestTestcase() throws Exception {
final WsdlProject project = new WsdlProject();
final RestServiceBuilder serviceBuilder = new RestServiceBuilder();
serviceBuilder.createRestService(project,"Your Rest URL");
final StringToStringMap headers = new StringToStringMap();
headers.put("Authorization", "Basic **********");
headers.put("Accept", "application/json");
final RestRequest request =
(RestRequest) project.getInterfaceList().get(0).getOperationList().get(0).getRequestList().get(0);
request.setRequestHeaders(headers);
final Submit submit = (Submit) request.submit(new WsdlSubmitContext(request), false);
final Response response = submit.getResponse();
String responseContent = response.getContentAsString();
log.info(responseContent);
}
上述解决方案工作正常,但默认情况下它使用 GET,无法找到任何方法从 GET 更改为 POST。
我正在尝试使用 REST Body 发送 POST 请求并寻找相同的代码
public void executeRestTestcase() 抛出异常 {
final WsdlProject project = new WsdlProject();
final RestServiceBuilder serviceBuilder = new RestServiceBuilder();
serviceBuilder.createRestService(project,"http://restapi.adequateshop.com/api/authaccount/registration");
final StringToStringMap headers = new StringToStringMap();
headers.put("Authorization", "Basic a93e4973-11f8-4efe-9d22-6edc3d46c186");
headers.put("Accept", "application/json");
final RestRequest request = (RestRequest) project.getInterfaceList().get(0).getOperationList().get(0).getRequestList().get(0);
request.setRequestHeaders(headers);
ReadJsonAsString redjson = new ReadJsonAsString();
String testrf = redjson.readFileAsString("");
request.setRequestContent(testrf);
RestMethod HttpMethod = request.getRestMethod();
WsdlSubmit submit = (WsdlSubmit) request.submit(new WsdlSubmitContext(request), false);
final Response response = submit.getResponse();
String responseContent = response.getContentAsString();
System.out.println("RESPONSE: " + responseContent);
}
我能够创建 SOAP 项目并执行关联的测试用例。
SOAP 代码片段:
public String executeSoapTestcase(final SoapUIData soapUIData) throws Exception {
SoapUI.getSettings().setBoolean(HttpSettings.RESPONSE_COMPRESSION, false);
final WsdlProject project = new WsdlProject();
String response = null;
final WsdlInterface[] ifaceArray = WsdlInterfaceFactory.importWsdl(project, soapUIData.getWsdlPath(), true);
if (ifaceArray == null) {
throw new IllegalArgumentException(
"inside SoapUIService.executeTestcase Binding not found in the specified WSDL");
}
final WsdlInterface wsdlInterface = ifaceArray[0];
Operation[] wsdlOperations = wsdlInterface.getAllOperations();
if (wsdlOperations == null) {
throw new IllegalArgumentException(
"inside SoapUIService.executeTestcase Operations not found in the specified WSDL");
}
wsdlInterface.changeEndpoint(wsdlInterface.getEndpoints()[0], soapUIData.getEndpoint());
final WsdlOperation operation = (WsdlOperation) wsdlOperations[0];
final WsdlRequest request = operation.addNewRequest("addRequest");
request.setRequestContent(soapUIData.getXmlRequest());
final WsdlSubmit<?> wsdlSubmit = (WsdlSubmit<?>) request.submit(new WsdlSubmitContext(request), false);
final WsdlResponse wsdlResponse = (WsdlResponse) wsdlSubmit.getResponse();
log.info("inside utm-soapui-service SoapUIService.executeTestcase Submit status : " + wsdlSubmit.getStatus());
if (wsdlResponse != null) {
response = wsdlResponse.getContentAsString();
}
return response;
}
我想为 REST 项目做同样的事情:我想使用 wadl 创建 Rest 项目并执行测试用例。
public void executeRestTestcase() throws Exception {
final WsdlProject project = new WsdlProject();
final RestServiceBuilder serviceBuilder = new RestServiceBuilder();
serviceBuilder.createRestService(project,"Your Rest URL");
final StringToStringMap headers = new StringToStringMap();
headers.put("Authorization", "Basic **********");
headers.put("Accept", "application/json");
final RestRequest request =
(RestRequest) project.getInterfaceList().get(0).getOperationList().get(0).getRequestList().get(0);
request.setRequestHeaders(headers);
final Submit submit = (Submit) request.submit(new WsdlSubmitContext(request), false);
final Response response = submit.getResponse();
String responseContent = response.getContentAsString();
log.info(responseContent);
}
上述解决方案工作正常,但默认情况下它使用 GET,无法找到任何方法从 GET 更改为 POST。 我正在尝试使用 REST Body 发送 POST 请求并寻找相同的代码
public void executeRestTestcase() 抛出异常 {
final WsdlProject project = new WsdlProject();
final RestServiceBuilder serviceBuilder = new RestServiceBuilder();
serviceBuilder.createRestService(project,"http://restapi.adequateshop.com/api/authaccount/registration");
final StringToStringMap headers = new StringToStringMap();
headers.put("Authorization", "Basic a93e4973-11f8-4efe-9d22-6edc3d46c186");
headers.put("Accept", "application/json");
final RestRequest request = (RestRequest) project.getInterfaceList().get(0).getOperationList().get(0).getRequestList().get(0);
request.setRequestHeaders(headers);
ReadJsonAsString redjson = new ReadJsonAsString();
String testrf = redjson.readFileAsString("");
request.setRequestContent(testrf);
RestMethod HttpMethod = request.getRestMethod();
WsdlSubmit submit = (WsdlSubmit) request.submit(new WsdlSubmitContext(request), false);
final Response response = submit.getResponse();
String responseContent = response.getContentAsString();
System.out.println("RESPONSE: " + responseContent);
}