对象在UnitTest类中没有属性“loads”

时间:2017-04-14 11:00:39

标签: python json python-unittest attributeerror

我试图在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()

当我运行测试时出现问题我收到此错误:

  

追踪(最近一次呼叫最后一次):

     

文件“testing.py”,第16行,在test_processJson

中      

jTest = json.loads(dictTestString)

     

AttributeError:'MyTests'对象没有属性'loads'

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

任何帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:1)

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

注意:你的代码还有其他几个错误/问题,但是我会让你找到并解决它们 - 这是乐趣的一部分不是吗?