一、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,并输入如下代码:
import sys
import os
if __name__ == '__main__':
print("hello word!")
如下图:
运行套件后,在测试报告中可以看到打印的 hello word!
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)
如下图
运行套件后,在测试报告中可以看到全局参数。