Python 属性错误:';模块';对象没有属性';添加';

Python 属性错误:';模块';对象没有属性';添加';,python,python-2.7,unit-testing,Python,Python 2.7,Unit Testing,我正在学习如何编写单元测试。 app.py: 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\u test.Te

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

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\u 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'

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

from app import MyClass
import unittest

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

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

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