接口测试脚本中运行自定义脚本

一、Groovy(Java)脚本

Agent 是用了内置的 Groovy引擎来运行脚本,所以无需额外环境。

脚本执行前,将 response 对象传入了方法中,所以在方法中可以直接使用。

1.1、运行 hello word!

新建一个自定义脚本步骤,并将 Language 选择为 Groovy,并输入如下代码:

def test(){
    println "Hello world"
}

test()

如下图:

运行套件后,能在 agent 上看到打印的 hello word!

1.2、入参

执行 Groovy 脚本的时候,将上一步的 response 对象,当参数传进了脚本,参数名是 response。

新增步骤,并输入如下代码:

def test(){
    println response.toString()
    println response.getBody()
    println response.getException()
}

test()

如下图:

运行套件后,在 agent 上看到如下图,第一行是 response.toString()、第二行是 getBody、第三行是 getException

 1.3、返回

添加如下代码:其中 ret 就是返回的内容

def test(){
	ret = "需要返回的内容:"
	ret = ret + "xxx xxx xxx"
}

test()
	ret

运行套件后,在测试报告中可以看到如下结果。

1.4、获得全局参数

执行 Groovy 脚本的时候,将全局参数对象,当参数传进了脚本,参数名是 globalParas。

代码如下:

def test(){
    println response.toString()
    println response.getBody()
    println response.getException()
    println globalParas
}

test()

如下图:

运行套件后,在测试报告中可以看到全局参数内容的打印。

二、Python脚本

Agent 是将你在步骤中输入的 python 脚本内容,保存到文件。然后通过 python 命令运行那个文件的方式,实现的 python 脚本调用。

2.1、运行 hello word!

新建一个自定义脚本步骤,并将 Language 选择为 Python,并输入如下代码:

#coding=utf-8
import sys import os if __name__ == '__main__': print("hello word!")

如下图:

 运行套件后,在测试报告中可以看到打印的 hello word!

注意:

1、agent 是在 python3 环境中运行的 python 脚本,请手工安装 python3;

2、当脚本或参数中有中文时,请添加 #coding=utf-8,否则会有中文编码问题(linux、windows的默认编码不同导致)

 2.2、入参

Agent 在执行 python 命令时,将上一步的结果当参数的方式传入到脚本。所以脚本中可以通过 sys.argv[1:][0] 的形式拿到上一步的执行结果。

新增步骤,并输入如下代码:能看到代码中将第一个参数(上一步的结果)保存到变量 response 中。

import sys
import os

if __name__ == '__main__':
    response = sys.argv[1:][0]
    print(response)  

 如下图

 

 运行套件后,在测试报告中可以看到上一步返回的结果。由于上一步是操作 redis,所以能看到 redis 返回的结果。

 2.3、返回

2.2 演示了如何拿到上一步的结果,那该如何返回数据并给后续参数或断言使用呢?

细心的同学应该已经看到了,在执行结果中的就是返回内容,也就是脚本中的所有 print 内容都会当返回结果返回(实现原理是执行 python 命令,然后得到所有标准输出)。

 

 2.4、获得全局参数

Agent 在执行 python 命令时,将全局参数当第二个参数的方式传入到脚本。所以脚本中可以通过 sys.argv[1:][1]的形式拿到全局参数。

代码如下:

import sys
import os

if __name__ == '__main__':
    globalParas = sys.argv[1:][1]
    print(globalParas)

如下图

 运行套件后,在测试报告中可以看到全局参数。

三、JavaScript 脚本

Agent 是用了内置的 JavaScript 引擎来运行脚本,所以无需额外环境。

脚本执行前,将 response、globalParas 对象传入了方法中,所以在方法中可以直接使用。

3.1、运行 hello word!

新建一个自定义脚本步骤,并将 Language 选择为 JavaScript,并输入如下代码:

注意:脚本中必须有一个 main 的方法。因为,agnet 中默认调用 main 方法作为 JavaScript 的主入口。

var main = function() {
  print("Hello world");
};

运行套件后,能在 agent 上看到打印的 hello word!

1.2、入参

执行 JavaScript 脚本的时候,将上一步的 response 对象,当参数传进了脚本,参数名是 response。将全局参数对象,当参数传进了脚本,参数名是 globalParas。

新增步骤,并输入如下代码:

var main = function() {
  var responseBody = response.getBody();
  print("上一步执行结果:" + responseBody);
  print("全局参数:" + globalParas);
};

如下图:

运行套件后,在 agent 上看到如下图,第一行是 response.getBody()、第二行是全局参数

1.3、从全局参数(globalParas)中取得变量内容

例如想得到 appid 这个字段的内容,添加如下代码:其中 value 就是全局参数中 appid 保存的内容

var main = function() {
  var responseBody = response.getBody();
  print("上一步执行结果:" + responseBody);
  print("全局参数:" + globalParas);
  var value = globalParas.get("appid");
  print("从全局全局参数中取得变量内容:" + value);
};

 运行套件后,看到如下结果。

1.4、返回

添加如下代码:

var main = function() {
  var responseBody = response.getBody();
  print("上一步执行结果:" + responseBody);
  print("全局参数:" + globalParas);
  var value = globalParas.get("appid");
  print("从全局全局参数中取得变量内容:" + value);
  
  return "返回结果......";
};

运行套件后,在测试报告中可以看到如下结果。其中 ret 就是返回的内容

 

 
 

  

 

 

 

 

 

 

 

posted @ 2023-09-07 17:55  rslai  阅读(72)  评论(0编辑  收藏  举报