使用 Karate 测试 Hessian RPC 请求的最佳实践
Best practices to test Hessian RPC requests with Karate
我们成功地使用 Karate 对 REST 和 SOAP 网络服务进行自动化测试。此外,我们还有一些基于 Hessian Web 服务协议 (http://hessian.caucho.com/) 的遗留 Web 服务。
Hessian 调用也是 HTTP 请求,因此我们想将它们添加到我们的空手道测试套件中。
我的第一次尝试是使用 Java Interop 功能,因此测试是作为 Java 代码实现的,并且 Java 类 在功能中被调用文件。
示例:
Scenario: Test offer purchase order
* def OfferPurchaseClient = Java.type('com.xyz.OfferPurchaseClient')
* def orderId = OfferPurchaseClient.createOrder('12345', 'xyz', 'max.mustermann@test.de')
* match orderId == '#number'
这种方法很有效,但我想知道是否有更优雅的方法也可以使用 Karate DSL 的更多功能。
我正在考虑这样的事情(虚拟代码):
Scenario: Test offer purchase order
Given url orderManagementEndpoint
And path offerPurchase
And request serializeHessian(offerPurchase.json)
When method post
Then status 200
And match deserializeHessian(response).orderId == '#number'
任何关于如何实施这种方法的recommendations/tips?
我实际上认为您已经在使用 Java 互操作方法的正确轨道上。在我看来,HTTP 客户端只是 Karate 功能的一小部分 sub-set,还有很多其他方面,例如断言、报告、parallel-execution,甚至 load-testing 等。所以我不用担心不使用 request
、method
、status
等
也许OfferPurchaseClient.createOrder()
可以return一个JSON。
或者我会做的是考虑像 OfferPurchaseClient.request(Map<String, Object> payload)
这样的方法 - 其中 payload
可以包含所有参数,包括路径和预期的响应代码等。
换句话说,我建议您围绕一些 Java 代码编写自己的 mini-framework 和自定义 DSL。如果你想要灵感和想法,请看这个讨论,它是一个围绕空手道构建 CLI 测试工具的例子:
我们成功地使用 Karate 对 REST 和 SOAP 网络服务进行自动化测试。此外,我们还有一些基于 Hessian Web 服务协议 (http://hessian.caucho.com/) 的遗留 Web 服务。
Hessian 调用也是 HTTP 请求,因此我们想将它们添加到我们的空手道测试套件中。
我的第一次尝试是使用 Java Interop 功能,因此测试是作为 Java 代码实现的,并且 Java 类 在功能中被调用文件。
示例:
Scenario: Test offer purchase order
* def OfferPurchaseClient = Java.type('com.xyz.OfferPurchaseClient')
* def orderId = OfferPurchaseClient.createOrder('12345', 'xyz', 'max.mustermann@test.de')
* match orderId == '#number'
这种方法很有效,但我想知道是否有更优雅的方法也可以使用 Karate DSL 的更多功能。
我正在考虑这样的事情(虚拟代码):
Scenario: Test offer purchase order
Given url orderManagementEndpoint
And path offerPurchase
And request serializeHessian(offerPurchase.json)
When method post
Then status 200
And match deserializeHessian(response).orderId == '#number'
任何关于如何实施这种方法的recommendations/tips?
我实际上认为您已经在使用 Java 互操作方法的正确轨道上。在我看来,HTTP 客户端只是 Karate 功能的一小部分 sub-set,还有很多其他方面,例如断言、报告、parallel-execution,甚至 load-testing 等。所以我不用担心不使用 request
、method
、status
等
也许OfferPurchaseClient.createOrder()
可以return一个JSON。
或者我会做的是考虑像 OfferPurchaseClient.request(Map<String, Object> payload)
这样的方法 - 其中 payload
可以包含所有参数,包括路径和预期的响应代码等。
换句话说,我建议您围绕一些 Java 代码编写自己的 mini-framework 和自定义 DSL。如果你想要灵感和想法,请看这个讨论,它是一个围绕空手道构建 CLI 测试工具的例子: