使用 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())
来代替。
至于正则表达式是否是获取响应中返回的令牌的正确解决方案,这将取决于响应的格式如何准确。
我正在尝试学习如何在 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())
来代替。
至于正则表达式是否是获取响应中返回的令牌的正确解决方案,这将取决于响应的格式如何准确。