У меня есть приложение 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']
...
...