SoapUI Groovy 脚本汇总:提高测试效率和精度的最佳实践

本文介绍了 SoapUI Groovy脚本的基础知识和用法,并提供了一些最佳实践和技巧,帮助你更好的优化 API 测试流程。

用 Apifox,节省研发团队的每一分钟

SoapUI Groovy 脚本汇总:提高测试效率和精度的最佳实践

免费使用 Apifox

相关推荐

最新文章

API

一体化协作平台

API 设计

API 文档

API 调试

自动化测试

API Mock

API Hub

立即体验 Apifox
目录

SoapUI Groovy 脚本

测试用例操作

SoapUI Groovy 提供了一些脚本,让我们可以完成增删改查的效果~

访问子级测试步骤

testRunner.testCase.testSteps[name]
testRunner.testCase.getTestStepByName(name)

访问父级、兄弟级

可以使用脚本访问父级,或者访问其他兄弟级别的测试步骤。

testRunner.testCase.testSuite.project.testSuites[name].testCases[name].testSteps[name]

获取响应

myResponse=testRunner.testCase.getTestStepByName(name).testRequest.response
myRequest=testRunner.testCase.getTestStepByName(name).testRequest
可以替换使用:getTestRequest(),testSteps[name],getResponse()等。

获取请求头

testRunner.testCase.getTestStepByName(name).testRequest.response.responseHeaders[name]
或者testRunner.testCase.getTestStepByName(name).testRequest.getResponse().getResponseHeaders(name)

设置请求头

def headerMap = new StringToStringMap()
headerMap.put(name,value)           
testRunner.testCase.getTestStepByName(name).testRequest.setRequestHeaders(headerMap)

获取请求 URL

testRunner.testCase.getTestStepByName(name).testRequest.path

获取测试步骤属性值

testRunner.testCase.getTestStepByName(name).testRequest.getAt("path")
对应:testRunner.testCase.getTestStepByName(name).testRequest.path
testRunner.testCase.getTestStepByName(name).testRequest.response.getAt("responseHeaders")
对应:testRunner.testCase.getTestStepByName(name).testRequest.requestHeaders

获取测试用例数量

 for(int i=0; i<testSuite.getTestCaseCount(); i++) {
     if (!testSuite.getTestCaseAt(i).isDisabled()) {
     if (!(testSuite.getTestCaseAt(i).getTestStepByName(name)).equals()){
   .....
         }
      }
   }

获取全局变量

def time_num=context.expand('${#Project#time_num}')

JSON 操作

构建 JSON

def createAuthorId = context.expand(name)
def flag = "1"
import groovy.json.JsonBuilder
def json = new JsonBuilder()
json {
userID  createAuthorId
fileflag  flag}
return json

解析 JSON

import groovy.json.JsonSlurper  
def xresponse = testRunner.testCase.testSteps["getCalendarListByCoid"].testRequest.response.contentAsString  
def slurper = new JsonSlurper()  
def re = slurper.parseText(xresponse)
re.calendar   re.calendar.size()
re.calendar.calendar_id     re.calendar.calendar_id[index]
re['calendar']['calendar_id'][index]
re.calendar.calendar_id.find{it=='1706'}
re.calendar.find{it.calendar_id=='1706'}

数据库

JSBC

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCExample1 {
public static void main(String[] args) {
   Connection con = null;
   Statement stmt = null;
   ResultSet rs = null;
   try{
     Class.forName("org.gjt.mm.mysql.Driver");
     con = DriverManager.getConnection("jdbc:mysql://localhost:3306/words",
          "words", "words");
     stmt = con.createStatement();
     rs = stmt.executeQuery("select * from word");
     while (rs.next()) {
       System.out.println("word id: " + rs.getLong(1) +
           " spelling: " + rs.getString(2) +
           " part of speech: " + rs.getString(3));
     }
   }catch(SQLException e){
     e.printStackTrace();
   }catch(ClassNotFoundException e){
     e.printStackTrace();
   }finally{
     try{rs.close();}catch(Exception e){}
     try{stmt.close();}catch(Exception e){}
     try{con.close();}catch(Exception e){}
  }
}
}

SQL

import groovy.sql.Sql
   sql = Sql.newInstance("jdbc:mysql://localhost:3306/words", "words",
          "words", "org.gjt.mm.mysql.Driver")

流程操控

testRunner.testCase
testRunner.fail(....)
testRunner.gotoTestStepByname(name)
testRunner.runTestStepByname(name)
context.myProperty="xxxx"

聊聊 SoapUI

其实 SoapUI Groovy 脚本 是挺好用的,就是 SoapUI 用起来感觉不太好用,门槛较高:

  • 不支持中文
  • 不免费
  • 界面难看
  • 操作麻烦

今天给大家推荐一个超级好用,同意支持 脚本操作 的 API 工具 —— Apifox

Apifox 脚本使用

Apifox 支持脚本的使用,而且非常方便使用,我们可以查看 Apifox 的帮助文档,里面写的很详细

帮助文档地址:https://www.apifox.cn/help/app/scripts/

脚本介绍

主要分成以下脚本操作:

  • 前置脚本:在接口请求前执行的脚本
  • 后置脚本:在接口请求后执行的脚本
  • 公共脚本:可以公用的脚本

Apifox 脚本实践

目标:我们现在用 Apifox 的脚本去完成两个操作:

  • 获取请求url
  • 检测返回数据的 code 是否为 200

接口创建

我们先新建一个接口,并填好 名称、URL、Method 等信息。

创建接口

前后置脚本

我们的两个目标是:

  • 获取请求url:需要在前置脚本里做
  • 检测返回数据的 code 是否为 200:需要在后置脚本里做

前置脚本

选择 前置脚本 中的 自定义脚本。

自定义脚本

Apifox 提供了一些现成的脚本代码,如果你想使用的话,直接点击它们就行。

我们这里输入:

console.log(pm.request.url)
脚本代码

后置脚本

选择 后置脚本 中的 自定义脚本。

自定义脚本

并选择 Apifox 为我们提供的 检验状态码 的脚本代码。

检验状态码

然后点击 保存 按钮。

运行

最后就是运行了,我们点击 发送 按钮,然后查看 前后置脚本代码 运行的结果:

  • 得到了请求的 URL 信息
  • 检验了返回的状态码为 200
运行

Apifox

欢迎体验一下,完全免费的哦:在线使用 Apifox

Apifox 是一体化 API 协作平台,可以实现 API 文档、API 调试、API Mock、 API 自动化测试,是更先进的 API 设计/开发/测试工具。

Apifox 提供了一种全面的 API 管理解决方案。使用 Apifox ,你可以在统一的平台上设计、调试、测试以及协作你的 API,消除了在不同工具之间切换和数据不一致的问题。

个人使用体验还是不错的,推荐使用~

Apifox