蝗虫IO故障“BadStatusCode”的含义

2024-04-19 03:02:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用蝗虫加载测试API,但每次我测试API时,都需要输入授权以外的参数,如下所示: API which need data inputted

它总是100%失败,上面写着“BadStatusCode(‘endpoint’,)”,已经在谷歌搜索它的意思,搜索蝗虫错误文档,但我仍然没有找到任何线索。每隔一个API(主要是带有除get以外的方法的API)我就用Hocust进行测试,它只需要像这样的参数授权:API with only authorization parameter

跑得很好。我已经在谷歌上搜索了关于如何向端点输入参数的各种蝗虫代码,我认为我的代码已经正确了

以下是我的代码(100%失败):

import os
from dotenv import load_dotenv
from locust import TaskSet, task, between, HttpLocust
from locust.contrib.fasthttp import FastHttpLocust
import resource
from dotenv import dotenv_values

load_dotenv()
resource.setrlimit(resource.RLIMIT_NOFILE, (65536, 999999))

host_p = os.getenv("HOST_P")
header = {
    'authorization': 'Bearer ' + os.getenv('TOKEN')
}

values = {
    "amount": 100
}
    
def payment(self):
    self.client.post("/pay", headers=header, json=values)

class ProcessPost(TaskSet):
    tasks={payment:2}

class ApiPost(FastHttpLocust):
    host = host_payment
    task_set = ProcessPost
    wait_time = between(5.0, 9.0)

下面是我的其他代码(运行非常好):

import os
from dotenv import load_dotenv
from locust import TaskSet, task, between, HttpLocust
from locust.contrib.fasthttp import FastHttpLocust
import resource
import datetime as d
from dotenv import dotenv_values
import json

load_dotenv()
resource.setrlimit(resource.RLIMIT_NOFILE, (65536, 999999))

host_p = os.getenv("HOST_P")
header = {
    'authorization': 'Bearer ' + os.getenv('TOKEN')
}

def payment(self):
    self.client.get("/pay", headers=header)

class ProcessPost(TaskSet):
    tasks={payment:2}

class ApiPost(FastHttpLocust):
    host = host_payment
    task_set = ProcessPost
    wait_time = between(5.0, 9.0)

任何帮助都将不胜感激


Tags: 代码fromimportapihosttaskosload
1条回答
网友
1楼 · 发布于 2024-04-19 03:02:00

我猜这可能是因为您将数据作为主体发送,而不是添加内容类型头,如果您使用json,它会添加内容类型头本身,但如果您使用数据传递值,则需要自己添加内容类型头

    headers['Content-Type'] = "application/json"

相关问题 更多 >