使用 Locust 获取响应数据的问题

Issue with getting the response data using Locust

我正在尝试学习如何在 Locust 上使用正则表达式,我正在尝试查看是否能够获取响应数据。我正在尝试使用 Locust 从 JMeter 重现我的测试脚本。 这是我遇到问题的代码部分。

import time,csv,json
from locust import HttpUser, task,between,tag

class ResponseGet(HttpUser):
    response_data= ""
    wait_time= between (1,1.5)
    host= "https://portal.com"
    username= "NA"
    password= "NA"

    @task
    def portal(self):
        print("Portal Task")
        response = self.client.post('/login', json={'username':'user','password':'123'})
        print(response)
        self.response_data = json.loads(response.text)
        print(response_data)     

建议,但我不知何故无法实现。

我的想法是获取响应数据 > 使用正则表达式提取字符串 > 传递字符串以供下一个任务使用

例如: 获取登录响应数据 > 使用正则表达式提取令牌 > 将令牌用于下一个任务。

有更好的方法吗?

你这样做的方式应该可行,但 Locust 的 HttpUser 客户端是基于请求的,所以如果你想访问响应数据作为 JSON 你应该能够做到这一点 self.response_data = response.json()。但这只有在响应正文有效时才有效 JSON。如果响应正文不是 JSON.

,您的代码也会失败

如果您的问题在于将响应文本解析为 JSON,响应很可能不是 JSON,可能是因为您遇到了错误或其他问题。您可以在尝试将其加载为 JSON 之前打印响应正文。但是您当前的 print(response) 不会这样做,因为它只会打印 Requests 返回的 Response 对象。您需要 print(response.text()) 来代替。

至于正则表达式是否是获取响应中返回的令牌的正确解决方案,这将取决于响应的格式如何准确。