对象在 UnitTest class 中没有属性 'loads'

object has no attribute 'loads' in UnitTest class

我正在尝试 运行 在 python 中进行一些测试。我正在使用 Unittest 框架。

测试“test_processJson”使用测试Json,dictTestString,然后检查它是否有一个或多个元素。这是我的脚本“testing.py”

import json
import starter#The code Im trying to test
import unittest

class MyTests(unittest.TestCase):

    def test_processJson(json):
        dictTestString = '{"city":"Barcelona"}'
        jTest = json.loads(dictTestString)  
        dictProcess = starter.processJson(dictTest)

        self.assertEquals(dictProcess["city"], "Barcelona")

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

当我 运行 测试时出现此错误:

Traceback (most recent call last):

File "testing.py", line 16, in test_processJson

jTest = json.loads(dictTestString)

AttributeError: 'MyTests' object has no attribute 'loads'

我是 python 的新手,所以我一直在寻找答案,但我没有犯任何我见过的错误。

我们将不胜感激。

谢谢。

您函数的参数名为 json,它是全局 json 模块的影子。实际上,因为这是一个方法的第一个参数,它被绑定到当前的 MyTest 实例,并且由于 unittest 测试方法只期望当前实例作为参数并且你不需要 json 这里的参数,你只需要将它重命名为 self (这是实例方法第一个参数的约定),你的问题就会得到解决。

注意:您的代码还有一些其他拼写错误/问题,但我将其留给您来查找和解决它们 - 这也是乐趣的一部分,不是吗?