Python test和django::int()参数之间的不一致性必须是字符串,但也必须是TypeError:字符串索引必须是整数

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:

我有一个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: 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')