我当前的测试套件要求我向API发送一些HTTP POST请求,其中一些请求需要通过HTTP Request发布特定对象。当我在Taurus中运行Jmeter时,在试图从我的YAML文件中获取这些对象时遇到了一些问题。
我将在这里附加我的YAML文件的一部分作为上下文(必须删除或更改一些属性以保密):
jmeter:
properties:
number.of.users: 1000
rampup.period: 300
loop.count: 1
client.id: "23id"
array.of.clients: ["id1","id2","id3"]
ids: [1,2,3]
rq:
- "number": "7312sa1"
"signed": "2020-06-08T00:00:00.000+0000"
"crmClientId": "1-32D1P"
问题是:当我试图传递字符串属性到我的HTTP请求,像这样:
{
"id": 1986,
"jsonrpc": "2.0",
"method": "method",
"params":
{
${__P(rq,)}
}
}
所有属性都用单引号括起来,导致请求返回错误400,因为获取属性后的请求是这样的:
{
"id": 1986,
"jsonrpc": "2.0",
"method": "method",
"params":
{
'rq':
'number': '7312sa1'
'signed': '2020-06-08T00:00:00.000+0000'
'crmClientId': '1-32D1P'
}
}
是否有一种方法将字符串属性传递给带有双引号的请求或以一种方式结构我的YAML文件,它将根据以下示例构造请求:
{
"id": 1986,
"jsonrpc": "2.0",
"method": "method",
"params":
{
rq:
"number": "7312sa1"
"signed": "2020-06-08T00:00:00.000+0000"
"crmClientId": "1-32D1P"
}
}
我尝试使用groovyreplaceAll()
方法,但它不工作与复杂的对象。我现在唯一的解决方案是在setUp线程中运行某种groovy脚本,然后通过groovy
jmeter函数获得它们是HTTP请求
如果要发送Python字典的字符串表示形式,则需要将其作为简单字符串发送。
查看YAML多行字符串并选择最适合您的选项。
使用例子:
modules:
jmeter:
properties:
rq: >
n"number": "7312sa1"n
"signed": "2020-06-08T00:00:00.000+0000"n
"crmClientId": "1-32D1P"n
Taurus大概是为了让测试人员和/或开发人员的生活更容易,这似乎不是你的情况,也许你应该考虑切换到没有任何包装的JMeter ?