无法从使用 locustio 执行 post 的 API 获得 200 响应

Can't get a 200 response from an API performing a post using the locustio

我正在使用 Locust 来尝试执行负载测试。我无法从我们正在使用的 API 获得良好的 (200) 响应。它不断地给我一个:

{
  "message": "Invalid API key",
  "status": 400
}

但是,使用我在 Postman 中用于 Locust 的相同信息会生成正确的响应。 post 是一个跨站点 post,因此它不会转到为蝗虫定义的主机。我已经用 Redacted 替换了所有敏感信息。那我做错了什么?任何帮助表示赞赏。

代码示例:

targetURL = 'https://Redacted, name=https:Redacted'

searchBody1 = {"params": "facets=%5B%22Property%20Type%22%2C%22amenities.Property%20Amenities%22%2C%22amenities.Suitability%22%2C%22amenities.Area%20Activities%22%2C%22Bedrooms%22%2C%22Total%20Beds%22%2C%22Bathrooms%22%5D&hitsPerPage=0"}

searchHeader1 = {'Host': 'Redacted',
    'Connection': 'keep-alive',
    'Content-Length': '223',
    'accept': 'application/json',
    'Origin': 'Redacted',
    'User-Agent': 'Mozilla/5.0 (Linux; Android 8.0.0; SM-G930U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.93 Mobile Safari/537.36',
    'content-type': 'application/x-www-form-urlencoded',
    'Sec-Fetch-Site': 'cross-site',
    'Sec-Fetch-Mode': 'cors',
    'Referer': 'Redacted',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'en-US,en;q=0.9'}

response = self.client.post(url=targetURL, json=searchBody1, headers=searchHeader1, catch_response=True)

您正在将 url 参数设置为“https://Redacted, name=https:Redacted”。 Python 不会像您假设的那样将其扩展为两个不同的参数。

您应该在调用 post() 时将名称指定为独立参数,如下所示:

self.client.post(url='https://Redacted', name='your_short_name', ...)