如何使用Azure Pipeline在Jmeter中传递变量组?

时间:2019-09-10 19:34:10

标签: jmeter azure-devops

我需要在链接到Azure Key Vault机密的azure管道中使用Variable组。该机密将用于连接到sql数据库。

在Azure Pipeline中以构建方式运行它时,是否可以将这个变量组传递/使用到Jmeter.jmx?

这是我在运行Jmeter.jmx负载测试文件时使用的模板。

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/test/run-jmeter-load-test?view=azure-devops#open-source

3 个答案:

答案 0 :(得分:1)

由于管道任务中没有此类选项或复选框可以直接将变量值传递到.jmx文件,因此可以使用Replace token任务来替换被替换的参数值。

  • 首先使用Azure Key Vault任务下载相关机密。

enter image description here

  • 添加替换令牌任务(注释:在测试步骤之前添加此任务 因此测试步骤可以使用.jmx文件执行 接收到值),然后指定目标文件

enter image description here

  • 然后将.jmx文件中的变量配置为#{parameter name}#格式:

enter image description here

注意:在.jmx文件中定义的参数名称应该与在Azure密钥保管库中的变量名称相同。否则,该参数将无法从变量获取值。

这是本地代理中存在的我的源文件,您可以看到该值已成功传递:

enter image description here

答案 1 :(得分:0)

使用linux sed:

用'sed'替换file.jmx中的已知令牌变量,如下所示: 在.jmx中,添加一个已知令牌,将其替换为:%SERVER_NAME% 将令牌替换为环境变量

- script: |
echo "Replace Servername parameter in file.jmx with $ sed "
sed 's/%SERVER_NAME%/server.com/g' file.jmx > new.jmx
# or replace with a global variable
sed 's/%SERVER_NAME%/'$(SERVER_NAME)'/g' file.jmx > new.jmx

Replacing with sed a value in .jmx

答案 2 :(得分:0)

使用Azure变量:

在file.jmx中添加您的Azure全局或管道局部变量,在这种情况下,我添加了user_name。 在jMeter中,我建议添加“配置元素”>“使用的已定义变量”,并将变量添加为:

 Name          | Value
 user_name     | ${__groovy( System.getenv("USER_NAME") )}

如果您要传递秘密密码,请使用“属性”选项,将引用添加到变量中

Name           | Value
user_password  | ${__P(USER_PASSWORD)}

将变量在jMeter> bin路径上本地设置为

   set USER_NAME=rmd_test_4

在jMeter请求中,应使用变量$ {user_name}和$ {user_password}。 您的Azure命令应与在CLI中本地运行它们的命令相同,如下所示:

   Locally: jmeter -n -t test_flow.jmx -JUSER_PASSWORD=abc123
   Azure:   jmeter -n -t test_flow.jmx -Juser_pwd=$(RMD_TEST_PASS)

我希望这会有所帮助