接口测试

接口测试-soapui-根据excle数据自动生成xml请求

2019-07-20  本文已影响0人  freedom_smile

背景:

测试一个通道所有的支付方式,一个支付方式一个接口

要求:

  1. 测试一个通道所有的支付方式
  2. 每个支付方式的部分参数一样,部分参数不一样
  3. 接口请求的格式为xml请求
  4. 每个接口请求有些参数要求全局唯一

分析如下:

  1. 用 excle准备好所有支付方式请求参数的字段集及参数值
  2. 用Soapui的DataSource获取所有excle里面的参数值
  3. 用 Groovy Script创建处理数据生成支付接口请求信息的脚本,将生成的请求信息存在testCase的某个属性中
  4. 用 http请求创建接口请求,请求内容为testCase的某个属性的值
  5. 用 DataSink保存需要的一些信息
  6. 用 DataSource Loop创建循环

本次重点是以上3、4点:

// 准备请求参数样例
def zf_head = [
        'merchant_no':'C',
        'version': '1.0',
        'pay': 'p',
        'out_no':'o'
]
def body =[
        'mId':"",
        'pId':"p"
]

//调用生成xml的方法
def reqXml = CreateRequest.createXmlReq(zf_head,body)
//打印输出
log.info(reqXml)
//将创建的信息存在testCase的reqXml属性中 供后续使用
testRunner.testCase.setPropertyValue("reqXml",reqXml)

//创建xml请求
static def createXmlReq(def head,def body) {
        //过滤body里面的空值项
        def bodyFilter = filteMap(body)

        def reqXml = new StringWriter()
        def xml = new MarkupBuilder(reqXml)
        xml.mkp.xmlDeclaration(version:"1.0",encoding:"utf-8")
        xml.p_request(){
            xml.zf_head(){
                head.each{ k,v ->
                    "${k}"("${v}")
                }
            }
            bodyFilter.each{ k,v ->
                "${k}"("${v}")
            }
        }
        return reqXml.toString()
    }

//过滤map里面值为空的值
static filteMap(args) {
        def filter_map = [:]
        args.each{ it ->
            if(it.value != ""){
                filter_map.put(it.key,it.value)
            }
        }
        return filter_map
    }

成功生成xml信息:

<?xml version='1.0' encoding='utf-8'?>
<p_request>
  <zf_head>
    <merchant_no>C</merchant_no>
    <version>1.0</version>
    <pay>p</pay>
    <out_no>o</out_no>
  </zf_head>
  <pId>p</pId>
<p_request>

达到目的,其他功能在其他文章中体现

上一篇下一篇

猜你喜欢

热点阅读