接口测试脚本中运行自定义脚本
一、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 就是返回的内容