Python flask приложение выбрасывает объект NoneType не является ошибкой подписки - PullRequest
0 голосов
/ 05 марта 2020

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

Запрос:

curl -X POST "localhost: 8090 / endp /" -H "Тип содержимого: application / json" -d @ jsonExample

Файл JsonEquals включает в себя:

{"idSeq":"0123","timeStamp":"15032019","source":"US","destination":"GB","content":"parcel"}

Ответ: Примечание: он вернет два НОВЫХ поля, как и ожидалось!

{
  "idSeq": "0123", 
  "routeInfo": "Good", 
  "content": "parcel", 
  "Notes": "Send fine "
}

Но когда я запускаю мой python unittest, используя команду: python myTest.py

import os, sys

import json
import main
import unittest


class PublicTestCase(unittest.TestCase):
    def setUp(self):
        self.app = main.app.test_client()

    def my_first_test(self):
        headers = {
            'Content-Type': 'application/json'
        }
        data = {
            "idSeq": "0123",
            "timeStamp": "15032019",
            "source": "US",
            "destination": "GB",
            "content": "parcel"
        }

        response = self.app.post('/endp',
                                 headers=headers,
                                 data=json.dumps(data),
                                 follow_redirects=True)
        print("+++++++++++++++++++++++++++++++++++")
        print(data)
        print("+++++++++++++++++++++++++++++++++++")
        print(response)

        assert response.status_code == 200


if __name__ == '__main__':
    unittest.main()

Я тогда получаю следующую ошибку:

[2020-03-05 14:00:08,093] ERROR in app: Exception on /endp/ [POST]
Traceback (most recent call last):
  File "/home/ubuntu/venvs/inference/lib/python3.6/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/ubuntu/venvs/inference/lib/python3.6/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/ubuntu/venvs/inference/lib/python3.6/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/ubuntu/venvs/inference/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/ubuntu/venvs/inference/lib/python3.6/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/ubuntu/venvs/inference/lib/python3.6/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "../src/main.py", line 72, in mypostmethod
    content = req_data['content']
TypeError: 'NoneType' object is not subscriptable
+++++++++++++++++++++++++++++++++++
{'idSeq': '0123', 'timeStamp': '15032019', 'source': 'US', 'destination': 'GB', 'content': 'parcel'}
+++++++++++++++++++++++++++++++++++
<Response streamed [500 INTERNAL SERVER ERROR]>
F
======================================================================
FAIL: my_first_test (__main__.PublicTestCase)

Есть идеи, что я делаю неправильно? Извиняюсь, если что-то подобное было задано ранее, но я проверил и не смог найти соответствующий ответ на то, что я делаю с python FLASK!

main.py

@app.route("/endp/", methods=['POST'])
def mypostmethod():
    req_data  = request.get_json()

    content = req_data['content']
    timeStamp = req_data['timeStamp']
    idSeq = req_data['idSeq']
    ...
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...