问题描述
以下是我使用RequestSpecBuilder类保留的代码:
public RestAssuredImported( String method,String url) {
this.method = method;
this.url = "http://localhost:3000/" + url;
}
public Response sendRequest(Map<String,Object> queryPath,Map<String,Object> pathParams,Object> body){
//set baseuri
builder.setBaseUri(url);
System.out.println("url:"+url);
//set parameters
if(pathParams.size()!=0) {
//builder.addpathParams(pathParams);
builder.addpathParam("id",5);
}
if(queryPath.size()!=0)
builder.addQueryParams(queryPath);
//set body
if(body.size()!=0)
builder.setBody(new JSONObject(body));
RequestSpecification requestSpec = builder.build();
//Response response;
RequestSpecification request = RestAssured.given();
request.contentType(ContentType.JSON);
request.spec(requestSpec);
request.log().all();
if (this.method.equalsIgnoreCase("POST")) {
return request.post();
} else if (this.method.equalsIgnoreCase("DELETE")) {
return request.delete();
} else if (this.method.equalsIgnoreCase("GET")) {
return request.get();
}else if (this.method.equalsIgnoreCase("PUT")) {
return request.put();
}else if (this.method.equalsIgnoreCase("PATCH")) {
return request.patch();
}
return null;
}
@Test
public void updateUserPUT() {
UserDetails user = new
UserDetails(5,"[email protected]","Sphoorthy","Ch","test.png");
body.put("id",user.getUserID());
body.put("email",user.getEmail());
body.put("first_name",user.getFirstName());
body.put("last_name",user.getLastName());
body.put("avatar",user.getAvatar());
pathparams.put("id",3);
RestAssuredImported first = new
RestAssuredImported("PUT","userdetails/{id}");
first.sendRequest(queryparams,pathparams,body).then().statusCode(200);
}
日志: 网址:http:// localhost:3000 / userdetails / {id} 失败:updateUserPUT java.net.URISyntaxException:索引34路径中的非法字符: http:// localhost:3000 / userdetails / {id} 在java.net.URI $ Parser.fail(未知来源) 在java.net.URI $ Parser.checkChars(未知来源) 在java.net.URI $ Parser.parseHierarchical(未知来源) 在java.net.URI $ Parser.parse(未知来源) 在java.net.URI。(未知来源) 在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)处 在sun.reflect.NativeConstructorAccessorImpl.newInstance(未知来源) 在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知 资源) 在java.lang.reflect.Constructor.newInstance(未知来源) 在 org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83) 在org.codehaus.groovy.runtime.callsite.ConstructorSite $ ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105)处 在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59) 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:238) 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:250) 在io.restassured.internal.RequestSpecificationImpl.getTargetPath(RequestSpecificationImpl.groovy:1452) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在java.lang.reflect.Method.invoke(未知来源) 在org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98) 在groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1225) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:822) 在io.restassured.internal.RequestSpecificationImpl.invokeMethod(RequestSpecificationImpl.groovy) 在org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:47) 在org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:57) 在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:157) 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:169) 在io.restassured.internal.RequestSpecificationImpl.partiallyApplyPathParams(RequestSpecificationImpl.groovy:1778) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在java.lang.reflect.Method.invoke(未知来源) 在org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98) 在groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1225) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:822) 在io.restassured.internal.RequestSpecificationImpl.invokeMethod(RequestSpecificationImpl.groovy) 在org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:47) 在org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:57) 在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:157) 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:185) 在io.restassured.internal.RequestSpecificationImpl.newFilterContext(RequestSpecificationImpl.groovy:1156) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在java.lang.reflect.Method.invoke(未知来源) 在org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98) 在groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1225) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:822) 在io.restassured.internal.RequestSpecificationImpl.invokeMethod(RequestSpecificationImpl.groovy) 在org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:47) 在org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:57) 在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:157) 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:185) 在io.restassured.internal.RequestSpecificationImpl.applyPathParamsAndSendRequest(RequestSpecificationImpl.groovy:1747) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在java.lang.reflect.Method.invoke(未知来源) 在org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98) 在groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1225) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:822) 在io.restassured.internal.RequestSpecificationImpl.invokeMethod(RequestSpecificationImpl.groovy) 在org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:47) 在org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:57) 在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:157) 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:185) 在io.restassured.internal.RequestSpecificationImpl.applyPathParamsAndSendRequest(RequestSpecificationImpl.groovy:1755) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在java.lang.reflect.Method.invoke(未知来源) 在org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98) 在groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1225) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:822) 在io.restassured.internal.RequestSpecificationImpl.invokeMethod(RequestSpecificationImpl.groovy) 在org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:47) 在org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:57) 在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:157) 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:185) 在io.restassured.internal.RequestSpecificationImpl.put(RequestSpecificationImpl.groovy:179) 在io.restassured.internal.RequestSpecificationImpl.put(RequestSpecificationImpl.groovy) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在java.lang.reflect.Method.invoke(未知来源) 在org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98) 在groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1225) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034) 在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:822) 在io.restassured.internal.RequestSpecificationImpl.invokeMethod(RequestSpecificationImpl.groovy) 在org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:47) 在org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:57) 在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:157) 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:169) 在io.restassured.internal.RequestSpecificationImpl.put(RequestSpecificationImpl.groovy:263) 在io.restassured.internal.RequestSpecificationImpl.put(RequestSpecificationImpl.groovy) 在Resources.RestAssuredImported.sendRequest(RestAssuredImported.java:61) 在com.SimpleHttpMethods.updateUserPUT(SimpleHttpMethods.java:76) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在java.lang.reflect.Method.invoke(未知来源) 在org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:132) 在org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:599) 在org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:174) 在org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46) 在org.testng.internal.TestInvoker $ MethodInvocationAgent.invoke(TestInvoker.java:822) 在org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:147) 在org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146) 在org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128) 在java.util.ArrayList.forEach(未知来源) 在org.testng.TestRunner.privateRun(TestRunner.java:764) 在org.testng.TestRunner.run(TestRunner.java:585) 在org.testng.SuiteRunner.runTest(SuiteRunner.java:384) 在org.testng.SuiteRunner.runSequentially(SuiteRunner.java:378) 在org.testng.SuiteRunner.privateRun(SuiteRunner.java:337) 在org.testng.SuiteRunner.run(SuiteRunner.java:286) 在org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53) 在org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96) 在org.testng.TestNG.runSuitesSequentially(TestNG.java:1218) 在org.testng.TestNG.runSuitesLocally(TestNG.java:1140) 在org.testng.TestNG.runSuites(TestNG.java:1069) 在org.testng.TestNG.run(TestNG.java:1037) 在org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115) 在org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) 在org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)