jmeter 如何从一个API响应中提取承载令牌并将其传递到Taurus中其他API的头中?

np8igboo  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(169)

我有一个名为generateAccessToken的API端点,它将生成一个accessToken,并将访问令牌与响应一起发送。

  • generateAccessToken API的响应:*
{
"data": {
   "userId": "sdfjojeit8hg48ut39h3hr89",
   "accessToken": "fjwem9t3e435ttu3t9u298ywt89gnm389ncr2x99829mntcmx" 
  }
}

还有另一个名为getUserProfile的API端点,它将获取用户配置文件并返回响应。
getUserProfile API的标头:

Content-Type: application/json
Authorization: Bearer fjwem9t3e435ttu3t9u298ywt89gnm389ncr2x99829mntcmx

还有许多类似的API需要在Authentication头中使用accessToken
我需要用一个yml文件来测试这些API。
测试需要命中generateAccessToken API,并从generateAccessToken API的响应中 * 获取 * accessToken,并将其存储在变量中,其他变量将此变量添加到其Authorization标头中。
我可以使用JsonExtractorHTTPHeaderManagerJmeter执行此操作
我是新的Taurus和安静的困惑如何配置yml文件来做到这一点。到目前为止,我已经创建了这一点。但不知道如何存储和使用accessToken的头。

execution:
  - concurrency: 100
    ramp-up: 1m
    hold-for: 2m
    scenario: TestUser

scenarios:
  TestUser:
    requests:
      - url: 'https://mywebapplication.com/generateAccessToken'
        method: POST
        headers:
          Content-Type: 'application/json'
      - url: 'https://mywebapplication.com/user/profile'
        method: GET
        headers:
          Content-Type: 'application/json'
          Authorization: 'kjdfoejgejfoskdfoeieio4etg94gn4880'
ndasle7k

ndasle7k1#

对于特定的情况,Taurus不会增加任何价值,它只会产生额外的开销,所以如果你有一个工作的JMeter脚本,你可以只run in in JMeter's command-line non-GUI mode,或者如果你需要特定的Taurus特性,比如实时报告,你可以使用Taurus运行现有的JMeter .jmx测试脚本:

bzt /path/to/your/test.jmx

如果出于任何原因你仍然想在Taurus YAML中实现这个场景--看看Taurus手册的Extractors章节。你应该能够通过修改你的测试得到你想要的结果,如下所示:

execution:
  - concurrency: 100
    ramp-up: 1m
    hold-for: 2m
    scenario: TestUser

scenarios:
  TestUser:
    requests:
      - url: 'https://mywebapplication.com/generateAccessToken'
        method: POST
        headers:
          Content-Type: 'application/json'
        extract-jsonpath:
          token:
            jsonpath: $.data.accessToken
      - url: 'https://mywebapplication.com/user/profile'
        method: GET
        headers:
          Content-Type: 'application/json'
          Authorization: 'Bearer ${token}'

相关问题