【问题标题】:AttributeError: 'module' object has no attribute 'add'AttributeError:“模块”对象没有属性“添加”
【发布时间】:2017-10-03 08:34:39
【问题描述】:

我正在学习如何编写单元测试。 app.py:

class MyClass:
    def add(self):
        return 2+2

app_test.py:

import app
import unittest

class TestMyClass(unittest.TestCase):
    def test_add(self):
        self.assertEqual(app.add(), 4)

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

运行命令:python -m unittest app_test.TestMyClass

错误:

Traceback (most recent call last):
  File "app_test.py", line 6, in test_add
    self.assertEqual(app.add(), 4)
AttributeError: 'module' object has no attribute 'add'

【问题讨论】:

  • 请发布您的项目目录结构
  • app.py 没有函数add(),但该模块中的类MyClass 有方法add(),因此出现错误
  • 显然你已经导入了app.py,这个模块确实没有add属性。也许你应该写类似from app import MyClass 然后测试self.assertEqual(MyClass.add(), 4)
  • 在您的代码中,app 指的是模块,而不是类。您需要创建一个实例:m = app.MyClass(),然后在您的测试代码中调用m.add()

标签: python python-2.7 unit-testing


【解决方案1】:

当它是一个对象方法时,您的测试直接调用add()。首先创建一个对象。这应该可以。

from app import MyClass
import unittest

class TestMyClass(unittest.TestCase):
    def test_add(self):
        o = MyClass()
        self.assertEqual(o.add(), 4)

【讨论】:

    猜你喜欢
    • 2010-11-18
    • 2018-08-28
    相关资源
    最近更新 更多