Как напечатать ответ саранчи (JSONDecodeError) - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть приложение flask, которое выглядит следующим образом: (обратите внимание, я упростил его ради этого вопроса)

@app.route("/app/ent/", methods=['POST'])
def methodpost():
    req_data = request.get_json()
    msg = req_data['msg']
    output = jsonify(msg=msg)
    return output

тогда для этого у меня есть файл саранчи, который выглядит как это:

from locust import HttpLocust, TaskSet, task, between


class MyClass(TaskSet):

    @task(1)
    def send_post(self):
        self.client.headers['Content-Type'] = "application/json"
        response = self.client.post("/app/ent/", json=
        {
            "msg": "test mesg example"
        })

        #temp
        json_response_dict = response.json()
        msg = json_response_dict['msg']
        print("Post nessage returned is " + msg)



class MyTest(HttpLocust):
    task_set = MyClass
    wait_time = between(0.5, 3.0)
    host = "http://localhost:5000"

Я запускаю locust следующим образом:

locust -f locust_myExample.py

Затем, когда я запускаю его с помощью пользовательского интерфейса, я получить следующую ошибку:

    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Любая идея , как я могу напечатать "msg" , которое возвращается приложением flask?

Однако, просто чтобы сделать уверен, что это работает, когда я делаю ручное тестирование с использованием cURL, он возвращает "msg"

curl --header "Content-Type: application/json" \
  --request POST \
  --data '{"msg":"test mesg example"}' \
  http://localhost:5000/app/ent

пример теста mesg

1 Ответ

1 голос
/ 14 апреля 2020

Решение:

Возвращенный ответ не был json, и когда он наконец вернулся как JSON, он работает. Эта строка отсутствовала:

output = jsonify(msg=msg)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...