【问题标题】:Maven SoapUI plugin, testing for missing path parametersMaven SoapUI 插件,测试缺少的路径参数
【发布时间】:2013-05-10 14:15:06
【问题描述】:

我对 Web 服务进行了一些回归测试,以确保在缺少必填字段时返回错误。当查询参数(例如http://dummyurl.com?someRequiredParameter=something)丢失时,一切正常。当缺少所需的路径参数时(例如http://dummyurl.com/requiredPathParameter/somethingelse),测试在 SoapUI 应用程序中正常工作,但在从 Maven 运行时失败。当它尝试查询这些错误的 URL 时,我在输出中看到错误,但是响应有什么不同(我应该从服务器检查 500 吗),或者我需要设置一些其他断言,以便测试通过SoapUI 和 Maven?

编辑

完整的错误是:

16:07:38,672 ERROR [WsdlSubmit] Exception in request: org.apache.commons.httpclient.URIException: escaped absolute path not valid
16:07:38,672 ERROR [SoapUI] An error occured [escaped absolute path not valid], see error log for details
org.apache.commons.httpclient.URIException: escaped absolute path not valid
    at org.apache.commons.httpclient.URI.setRawPath(URI.java:2837)
    at org.apache.commons.httpclient.URI.parseUriReference(URI.java:2023)
    at org.apache.commons.httpclient.URI.<init>(URI.java:147)
    at org.apache.commons.httpclient.HttpMethodBase.getURI(HttpMethodBase.java:265)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:383)
    at com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.sendRequest(HttpClientRequestTransport.java:194)
    at com.eviware.soapui.impl.wsdl.WsdlSubmit.run(WsdlSubmit.java:123)
    at com.eviware.soapui.impl.wsdl.WsdlSubmit.submitRequest(WsdlSubmit.java:76)
    at com.eviware.soapui.impl.rest.RestRequest.submit(RestRequest.java:208)
    at com.eviware.soapui.impl.wsdl.teststeps.RestTestRequestStep.run(RestTestRequestStep.java:753)
    at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.runTestStep(WsdlTestCaseRunner.java:207)
    at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.internalRun(WsdlTestCaseRunner.java:138)
    at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.internalRun(WsdlTestCaseRunner.java:39)
    at com.eviware.soapui.impl.wsdl.support.AbstractTestRunner.run(AbstractTestRunner.java:139)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:679)
16:07:38,673 INFO  [SoapUIProTestCaseRunner] Assertion [Match content of [Fault]] has status UNKNOWN

【问题讨论】:

  • 能否请您添加测试失败的代码?
  • 我稍后会尝试添加代码,从这里开始 VPN 几乎破坏了我访问任何主机的能力。但基本上是 if (requiredPathParameter == null) { throw buildInformativeExceptionHere("Missing required parameter", parameter)。问题似乎是有问题的参数是 REST API 调用的一部分并且丢失了。
  • 将 -X 添加到 maven 行(调试),然后查找相位输出
  • 在哪里可以找到相位输出?我所看到的只是我几天前添加到问题中的相同堆栈跟踪。
  • 当您添加 -X 时,您将启用调试输出,这是一个非常详细和详细的 maven 执行输出。假设您使用的是 maven 3.0.x 版,您应该会看到一个调试跟踪,说明测试或集成测试阶段正在开始

标签: maven-2 soapui regression-testing


【解决方案1】:

行为应该是一样的。

检查 SOAPUI Maven 插件生成的日志文件。它包含每个测试的返回代码。如果服务器端有错误,你应该找到 500 的。

您的测试用例已经包含一个检查返回码的断言?

【讨论】:

  • 错误消息中没有代码,只是“错误 [SoapUI] 发生错误[转义的绝对路径无效],请参阅错误日志了解详细信息 org.apache.commons.httpclient.URIException:转义的绝对路径无效”。我用完整的堆栈跟踪更新了这个问题。是的,我已经在检查返回码了。
【解决方案2】:

我最终不得不禁用有问题的测试。看起来 SoapUI 应用程序可以处理丢失的路径参数,但 maven 插件不能。

如果弹出一个新的答案来解释如何使用 SoapUI maven 插件对此进行测试,我会试一试并(希望)将其设为可接受的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    相关资源
    最近更新 更多