Python test和django::int()参数之间的不一致性必须是字符串,但也必须是TypeError:字符串索引必须是整数
我有一个API视图,它接收请求并创建一些数据。它很好用。当我运行我的测试时,我使用pytest编写我收到以下错误:Python test和django::int()参数之间的不一致性必须是字符串,但也必须是TypeError:字符串索引必须是整数,python,django,django-rest-framework,pytest,Python,Django,Django Rest Framework,Pytest,我有一个API视图,它接收请求并创建一些数据。它很好用。当我运行我的测试时,我使用pytest编写我收到以下错误: node_name = (data_node['name']) TypeError: string indices must be integers 当我将代码更改为如下整数时:node\u name=int((data\u node['name'])my django视图会显示以下错误: node_name = (data_node['name']) TypeError:
node_name = (data_node['name'])
TypeError: string indices must be integers
当我将代码更改为如下整数时:node\u name=int((data\u node['name'])
my django视图会显示以下错误:
node_name = (data_node['name'])
TypeError: string indices must be integers
:int()参数必须是字符串
我就像。。。为什么
这是我的观点(为简洁起见缩短):
我正在发送的数据(请求)如下所示:
{'project': 'project1', 'name': 'Graph1', 'description': 'test',
'nodes': [{'name': '25', 'graph': 3}, {'name': '24', 'graph': 3}],
'edges': [{'name': 'EdgeForGraph1', 'graph': 3, 'source': '25', 'target': '25'}]}
最后,如果它有助于我的测试(我发送相同的数据):
我很困惑为什么我的测试不接受代码,我的代码也不接受我的测试。特别是当调试和打印出数据节点的类型时,它告诉我这是一个dict。所以这应该是正确的
有人能帮我吗?非常感谢。非常感谢 我怀疑问题在于您没有告诉测试客户机数据是JSON,因此DRF不知道如何对其进行反序列化,只是将其作为字符串处理。试试这个:
response = client.post(url, data, content_type='application/json')
您视图中的节点是什么?这不是一个方法的争论,我道歉。我不小心忘了。问题用节点更新
。基本上,节点是作为请求接收的数据。请求是一个字典列表。所以我在列表中循环,对于每个节点_数据(应该是一个dict),我在循环中做一些事情,也许这两个错误来自数据中的不同位置?听起来您有一个地方的值是dict,但name
条目错误地是字符串,还有一个地方的值错误地是字符串。感谢Linovia和jasonharper的帮助。Daniels回答了trickwhoever投票给我的问题请告诉我原因…天哪,是的,就是这样!!非常感谢你,丹尼尔!真的很感激!!
response = client.post(url, data, content_type='application/json')