基于调用测试用例

时间:2016-05-26 09:19:54

标签: rest groovy mocking soapui

流程如下:

客户RQ->被测系统 - >后端系统 - > SUT - >客户回复

后端可以响应各种错误,目标是测试这些错误如何传播到客户端。 我试图使用soapui rest mock来模拟后端系统。我在mock中创建了多个错误响应。但问题是它们是由同一个客户端RQ触发的。 我们的想法是确定正在运行的测试用例的后端响应。

TC 404:客户端RQ - > SUT - >后端模拟响应404 - > SUT - >客户 - >断言404

TC无数据:客户端RQ - > SUT - >后端模拟响应没有数据 - > SUT - >客户 - >断言没有数据错误 ...

由于每个TC的客户端RQ相同,因此动态选择支持模拟响应的唯一方法是知道哪个TC正在运行。

最底层的问题是如何将testRunner.testCase对象传递给模拟响应调度程序脚本

1 个答案:

答案 0 :(得分:1)

你走了:

  1. 您将无法在模拟服务中找到测试用例名称。
  2. 但是,如果您只想要测试用例名称,并且无法识别,则可以将测试用例名称作为http标头值发送到模拟服务。例如,添加标题名称“TC_NAME”,将值添加为“TC1”。
  3. 可以使用下面的示例脚本在模拟调度程序SCRIPT中读取
  4. http标头
    log.info mockRequest.requestHeaders['TC_NAME'][0]
     //read the request header in the mock service
    def tcName = mockRequest.requestHeaders['TC_NAME'][0]
    def responseFile
    if (tcName == 'TC1') {
        responseFile = '/set/your/right/response/for/tc1_response.xml'
    } else if (tcName =='TC2'){
        responseFile = '/set/your/right/response/for/tc2_response.xml'
    } else {
      //set default file as response
       responseFile = '/set/your/right/response/for/default_response.xml'
    }
    context.content = new File(responseFile).text
    

    在模拟响应中,只需添加${content},以便可以根据条件从动态文件加载数据并将其设置为响应内容。

    您可能还会找到一些类似的示例here

    希望这有帮助。