python - Python烧瓶应用程序抛出NoneType object is not subscriptable错误
问题描述
我有一个 python (flask) 应用程序,当我使用以下命令卷曲它时:
要求:
curl -X POST "localhost:8090/endp/" -H "Content-Type: 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 做什么的相关答案!
主文件
@app.route("/endp/", methods=['POST'])
def mypostmethod():
req_data = request.get_json()
content = req_data['content']
timeStamp = req_data['timeStamp']
idSeq = req_data['idSeq']
...
...
解决方案
推荐阅读
- python - 具有已知对应关系的两个点云的刚性配准
- python - 在 pandas DataFrame 中对月份进行排序
- python - TypeError: 无法根据 interp_func(x, xp, fp, left, right) 的规则“安全”将数组数据从 dtype('O') 转换为 dtype('float64')
- kotlin - Kotlin - 一种将可变列表公开为不可变列表的优雅方式
- swift - 如何快速将导航项按钮连接到视图控制器?
- rust - 为什么 Rust f32 没有给出好的解决方案,而 f64 有?
- c++ - 谷歌测试的“测试框架意外退出错误”
- spring - 具有不同键/值的 Spring Cloud Stream 中的多个输出绑定(AKA 分支)
- c# - 如果在应用程序启动时创建和播种大约 120k 的记录,有什么方法可以加快应用程序的响应时间?
- javascript - 为什么我的 else if 语句在这种情况下不起作用?