如何使用Groovy在testSuite TearDown中捕获请求和响应

时间:2019-02-12 12:08:22

标签: groovy soapui

我有一个testSuite,可以说5个案例,我从我的testSuite运行案例。

在我的拆卸脚本中,我想捕获所有测试用例以及所有测试testSteps的所有请求和响应。

下面是我在tearDown TestSuite中编写的代码,context.expand中的问题返回空。我认为需要testCase上下文,或者不确定我要去哪里。

tc_list = testSuite.getTestCaseList()
tc_count = tc_list.size()
for(i=0;i<tc_list.size();i++){
    if(!tc_list[i].isDisabled()){

        ts_list =  tc_list[i].getTestStepList()

        for(j=0;j<ts_list.size();j++){
            req = testSuite.getPropertyValue("reportpath")+'/'+testSuite.getName()+'/'+tc_list[i].getName()+'/'+ts_list[j].getName()+'_RequestData.txt'
            res = testSuite.getPropertyValue("reportpath")+'/'+testSuite.getName()+'/'+tc_list[i].getName()+'/'+ts_list[j].getName()+'_ResponseData.txt'

            def request_expand = context.expand('${'+ts_list[j].getName()+'#Request}')
            log.info '${'+ts_list[j].getName()+'#Response}'+tc_list[i].getName()
               def response_expand = context.expand('${'+ts_list[j].getName()+'#Response}')
              log.info response_expand



             /* def req_file = new File(req)
               req_file.write(request_expand,"UTF-8")
               def res_file = new File(res)
               res_file.write(response_expand,"UTF-8") */



            }
        }


    }

2 个答案:

答案 0 :(得分:0)

以下代码对我有用。但是我仍在尝试捕获rawRequest和rawResponse,但仍未实现

tc_list = testSuite.getTestCaseList()
tc_count = tc_list.size()
for(i=0;i<tc_list.size();i++){
    if(!tc_list[i].isDisabled()){

        ts_list =  tc_list[i].getTestStepList()

        for(j=0;j<ts_list.size();j++){

            req = testSuite.getPropertyValue("reportpath")+'/'+testSuite.getName()+'/'+tc_list[i].getName()+'/'+ts_list[j].getName()+'_RequestData.txt'
            res = testSuite.getPropertyValue("reportpath")+'/'+testSuite.getName()+'/'+tc_list[i].getName()+'/'+ts_list[j].getName()+'_ResponseData.txt'

            def request_expand = testSuite.getTestCaseByName(tc_list[i].getName()).getTestStepByName(ts_list[j].getName()).getPropertyValue("Request")
            def response_expand = testSuite.getTestCaseByName(tc_list[i].getName()).getTestStepByName(ts_list[j].getName()).getPropertyValue("Response")
            def req_file = new File(req)
            def res_file = new File(res)
            log.info testSuite.getTestCaseByName(tc_list[i].getName()).getName()+' '+testSuite.getTestCaseByName(tc_list[i].getName()).getTestStepByName(ts_list[j].getName()).getName()+' '+response_expand
            if(request_expand!=null && response_expand!=null){

                 log.info testSuite.getTestCaseByName(tc_list[i].getName()).getName()+' '+testSuite.getTestCaseByName(tc_list[i].getName()).getTestStepByName(ts_list[j].getName()).getName()+' '+response_expand

               req_file.write(request_expand,"UTF-8")

               res_file.write(response_expand,"UTF-8")
                }

            }
        }


    }

答案 1 :(得分:0)

@Ragesh kr

任何时候只要在Soap ui或Ready API中,您都需要 RawRequest RawResponse

您可以将Request替换为 Raw Request                  和原始响应

的响应

我只是在您的代码中做到了

        def request_expand = testSuite.getTestCaseByName(tc_list[i].getName()).getTestStepByName(ts_list[j].getName()).getPropertyValue("RawRequest")
        def response_expand = testSuite.getTestCaseByName(tc_list[i].getName()).getTestStepByName(ts_list[j].getName()).getPropertyValue("RawResponse")

一些其他示例可以帮助所有人

当我们只需要soapui中的请求和响应时,我们可以在下面使用

enter image description here

当我们仅需要通过Groovy在soapui / ReadyaPI中使用RawRequest和RawResponse时,我们可以在下面使用

 req=context.expand('${RequestStepName#RawRequest}')
 log.info req
 res=context.expand('${RequestStepName#RawResponse}')
 log.info res

enter image description here

相关问题