博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
soapui + groovy 接口自动化测试 第七章
阅读量:5343 次
发布时间:2019-06-15

本文共 1837 字,大约阅读时间需要 6 分钟。

野怪资源,保证发育!

1.解析Json数据脚本

import groovy.json.JsonSlurper

def xresponse = testRunner.testCase.testSteps["getPlans"].testRequest.response.contentAsString
def slurper = new JsonSlurper()
def re = slurper.parseText(xresponse)

例:Json格式

{

    "a": "b",
    "c": "d",
    "e": "f",
    "g": [
        {
            "h": "k",
            "l": "m"
        }
    ]
}

groovy读取json的方式很简单,re.c读取c对应的值/re.g.h读取h对应的值

2.步骤跳转脚本

testRunner.gotoStepByName("Step2") 跳转到指定步骤

testRunner.runTestStepByName("Step2") 运行指定步骤或脚本

3.获取response中header值,并设置到下一个请求header中

示例为,获取response-header中session的值(因为seesion值有很多数据需要截取)

首先在下一个请求header部分加入一个参数cookie,然后执行如下脚本就可以了

def teststep = testRunner.testCase.testSteps['login.do']

def setcookie = teststep.testRequest.response.responseHeaders["Set-Cookie"].toString()
def num = setcookie.indexOf(';')
def cookie = setcookie.substring(1, num)
testRunner.testCase.testSuite.setPropertyValue("cookie", cookie)

其他,也可以将获取的session固定的写入TestCase/TestSuite参数位置,在请求header部分添加cookie参数,值部分填入${#TestCase#cookie}的方法来读取

4.设置Request-header部分的参数 

def headers = request.requestHeaders

header.put("X-tokenHeader", "value")

request.requestHeaders = headers

可以理解为将header中参数取出来放在一个Map里边,可以对这个map进行put/remove操作,然后在覆盖回去

5.改变reponse--感觉有点意思,没用过

if(request.response == null)

  return

def content = context.httpResponse.responseContent

content = content.replaceAll("555", "444")

context.heepResponse.responseContent = content

6.数据检查

在Groovy Script中使用equals()/contains()方法进行检查就行了。

soapui提供断言功能,但是在断言环境中不支持testrunner的用法,它支持的是messageExchange(用法和testrunner类似)

Groovy Script环境右上角描述了支持的方法log、context、testRunner

Script Assertion环境右上角描述的支持方法为log、context、messagetExchange

并且断言脚本环境是soapui pro(收费版)才有的功能,既然Groovy Script已经满足了相应功能,所以我们不必去使用断言环境也不必去掌握messageExchange的用法;

 附:官方帮助文档脚本地址 http://www.soapui.org/scripting---properties/tips---tricks.html

下一章将带来如何引入外部脚本及groovy外部脚本示例

转载于:https://www.cnblogs.com/mayibanjiah/p/4552607.html

你可能感兴趣的文章
对javascript中的匿名函数的理解
查看>>
noip模拟赛 道路分组
查看>>
【Python web 开发】django 从请求到响应经历了什么?
查看>>
移动端调试痛点?——送你五款前端开发利器
查看>>
贴心小棉袄
查看>>
关于this在不同使用情况表示的含义
查看>>
汇编实现: C库常见函数,串操作指令作用
查看>>
python中lambda表达式应用
查看>>
spring集成mongodb jar包版本问题
查看>>
ajax
查看>>
周赛Problem 1025: Hkhv love spent money(RMQ)
查看>>
[opencv] cv::Mat_类有时候可以替代cv::Mat类
查看>>
【BZOJ1257】【CQOI2007】余数之和sum
查看>>
(转)Thoughts on TypeScript——JavaScript大师Nicholas C. Zakas
查看>>
Spring Data JPA 实例查询
查看>>
写的第一个简单表格
查看>>
C# Datatable.Select()用法简介
查看>>
吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-refresh...
查看>>
114. Flatten Binary Tree to Linked List
查看>>
转载:LeetCode:5Longest Palindromic Substring 最长回文子串
查看>>