我正在尝试使用Python进行单元测试,但是我已经严重地脱离了实践,并且遇到了导入方面的问题。
自从我做Python以来已经很长时间了,我也试图进行单元测试。直到最近我大部分时间都在使用bash,所以我可能忽略了一些东西。它在Python 3上,但是我认为版本最终没有关系。只显示相关代码。
Directory structure:
myProject/
|
\keter/
| |-keter.py
| |-__init__.py
|
\tests/
| |- test_first.py
在keter.py
import os
import zipfile
import re
import xml.dom.minidom
class Converter:
def my_function(params):
#do stuff
在test_first.py
import unittest
import sys
sys.path.append('../')
from keter import Converter
class TestConverter(unittest.TestCase):
def test_instantiate(self):
my_converter = Converter()
self.assertIsInstance(my_converter,Converter)
尝试运行测试时...
$ python -m unittest discover
E
======================================================================
ERROR: test_first (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: test_first
Traceback (most recent call last):
File "path_to_python\lib\unittest\loader.py", line 436, in _find_test_path
module = self._get_module_from_name(name)
File "path_to_python\lib\unittest\loader.py", line 377, in _get_module_from_name
__import__(name)
File "path_to_project\tests\test_first.py", line 5, in <module>
from keter import Converter
ImportError: cannot import name 'Converter' from 'keter' (..\keter\__init__.py)
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (errors=1)
答案 0 :(得分:0)
尝试像这样更改您的test_first.py。
import unittest
import sys
sys.path.append('../')
import keter
class TestConverter(unittest.TestCase):
def test_instantiate(self):
my_converter = keter.Converter()
self.assertIsInstance(my_converter,Converter)