我对artillery.io非常陌生,我遇到了一个问题。我希望从JSON响应中获得一个值,并检查它的'expect‘子句,所以我这样做:
config:
target: 'https://api.duckduckgo.com'
plugins:
expect: {}
phases:
- duration: 1
arrivalRate: 1
scenarios:
- flow:
- get:
url: "/?q=cao&format=json"
capture:
- json: $RelatedTopics[0].FirstURL
as: url
expect:
- statusCode: 200
- equals:
- "{{ url }}"
- "https://duckduckgo.com/209/Cao_Wei"
- log: "url is {{ url }}"然后我就这样叫炮兵:
artillery run duck.yml然后我得到了这样的东西:
User variables:
target : https://api.duckduckgo.com
$environment : undefined
$uuid : 0774da00-b6e6-415c-bd28-0ff4bedd07ec
not ok equals , https://duckduckgo.com/209/Cao_Wei
expected: all values to be equal
got: , https://duckduckgo.com/209/Cao_Wei
Request params:
https://api.duckduckgo.com/?q=cao&format=json
""我省略了其余的输出,因为它太大了。在我看来,当它说“looks等于,Wei”时,我的url变量是未定义的。
在像“JSONPath”这样的引号上使用$RelatedTopics.FirstURL也会带来同样的问题。
我安装了expect (https://artillery.io/docs/plugin-expectations-assertions/)插件如下:
npm install -g artillery-plugin-expect拜托,我在这里少了什么?
发布于 2018-12-20 17:16:23
如果升级到插件的最新版本(1.2.1),早期版本在涉及捕获变量的equals比较中有一个错误(参考:https://github.com/artilleryio/artillery-plugin-expect/pull/4),那么问题就解决了。
https://stackoverflow.com/questions/53584995
复制相似问题