JSR223 sampler has good possibility to write and execute some code,
just put jython.jar into /lib directory, choose in "Language" pop-up
menu jython and write your code in this sampler.
import java.io.BufferedReader;
import java.io.InputStreamReader;
Runtime r = Runtime.getRuntime();
Process p = r.exec("/usr/bin/python /path/to/your/script.py");
p.waitFor();
BufferedReader b = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
StringBuilder response = new StringBuilder();
while ((line = b.readLine()) != null) {
response.append(line);
}
b.close();
vars.put("ID",response.toString());
在您的HTTP采样器上添加一个BSF预处理器,选择as language Jython并执行所需的魔术来获取id,作为一个示例,我使用了这个:
import random
randImageString = ""
for i in range(16):
randImageString = randImageString + chr(random.randint(ord('A'),ord('Z')))
vars.put("randimage", randImageString)
由尤金·卡扎科夫(Eugene Kazakov)发布的一个可能的解决方案:
Sadly there is a bug in Jython, but there are some suggestion on the page.
More here.
我相信Beanshell PreProcessor是你要找的。
Beanshell代码示例如下:
上面的代码将执行Python脚本并将其响应放入
ID
变量中。您可以在HTTP请求中将其称为 /图像/${ID}/list/
有关Apache JMeter中Beanshell脚本的更多信息和一种Beanshell食谱,请参见How to use BeanShell: JMeter's favorite built-in component指南。
您还可以将请求放在Transaction Controller下,以从加载报告中排除预处理器执行时间。
您可以使用BSF预处理器。
首先下载Jython Library并保存到jmeter的lib目录。
在您的HTTP采样器上添加一个BSF预处理器,选择as language Jython并执行所需的魔术来获取id,作为一个示例,我使用了这个:
注意
vars.put("randimage",randImageString")
,它将在稍后向jmeter插入可用的变量。现在在您的测试中,您可以在需要时使用
${randimage}
:现在,每个请求都会随着Python脚本中randmage的值而改变。
相关问题 更多 >
编程相关推荐