Python3测试导入错误

时间:2016-07-06 21:13:45

标签: python unit-testing testing

我正在使用python3尝试获取示例应用程序工作的测试文件,但它一直在抛出ImportError: No module named 'calculate'

我的文件结构是:

/calculate
  __init__.py
  calculate.py
  test/
    __init__.py
    calculate_test.py

我无法弄清楚为什么会这样,任何帮助都会非常感激。

__init__.py个文件为空。

calculate.py 包含:

class Calculate(object):
    def add(self, x, y):
        return x + y

if __name__ == '__main__':
    calc = Calculate()
    result = calc.add(2, 2)
    print(result)

calculate_test.py 包含:

import unittest
from calculate import Calculate

class TestCalculate(unittest.TestCase):
    def setUp(self):
        self.calc = Calculate()

    def test_add_method_returns_correct_result(self):
        self.assertEqual(4, self.calc.add(2,2))

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

我从根python test/calculate_test.py文件夹运行/calculate并收到错误

Traceback (most recent call last):
  File "test/calculate_test.py", line 2, in <module>
    from calculate import Calculate
ImportError: No module named 'calculate'

我一直在摆弄不同的结构,无法理解问题所在。

1 个答案:

答案 0 :(得分:0)

您的项目结构就是原因。启动时,测试脚本在搜索路径中没有外部目录。以下是解决该问题的一些方法

  1. 将测试文件移动到包含其导入的模块的同一目录中。这将不需要更改测试文件。
  2. 使用此结构

    KEY     SUM_TC
    --- ----------
    A           39
    B           29
    C            6
    D           12
    

    这将要求您将calculate_test.py中的导入签名更改为./project/ calculate_test.py calculate/ __init__.py calculate.py