2011-04-27 39 views
0

我想写使用试用一些单元测试我扭曲的应用程序, 我写单元测试类我的第一个“空”审判,但是当我尝试运行它,我得到导入错误导入我的应用程序模块。扭曲试验单元测试得到的ImportError

这是因为我怀疑因为试验更改当前的工作目录 当我尝试导入我的模块与对象类,我想单元测试 它失败。

我将我的应用程序模块保存在我自己设置的单个目录中,它不在PYTHONPATH的任何目录中,或者在我的应用程序中,模块导入其他模块,因为它们都位于相同目录中。

代码看起来类同这样的:

from twisted.trial import unittest 
from twisted.spread import pb 
from twisted.internet import reactor, protocol 
from MyModule import MyTestSubject 

class MyTestSubjectTest(unittest.TestCase): 

    def setUp(self): 
     print('\nset up') 


    def test_startConsoleServer(self): 
     ts = MyTestSubject() 
     .... # here goes the body of the test 


    def tearDown(self): 
     print('\ntear down') 

所以错误味精是这样的:
exceptions.ImportError:无模块名为MyModule的

也许这不是标准使用试用或部署python应用程序的方式。

更新:我只是想出了解决类似的问题,只是追加app目录到sys.path中 这样的进口部分将是这样的:

from twisted.trial import unittest 
from twisted.spread import pb 
from twisted.internet import reactor, protocol 
import sys, os; sys.path.append(os.path.abspath(os.path.curdir)) 
from MyModule import MyTestSubject 
+0

什么是确切的导入错误?什么是不被导入? – 2011-04-27 19:37:06

+0

对不起,忘了提。 MyModule中没有找到“exceptions.ImportError:无模块名为MyModule的”,我刚刚找到了一个解决办法,我加入,我保持我的应用程序移到sys.path – mik80 2011-04-27 19:53:45

回答

0

如何你的模块/包组织的?也许尝试类似下面的结构,那么你就不需要做任何路径两轮牛车:从刚才的mypackage包,DIR上述

$ ls -R mypackage 
mypackage: 
__init__.py __init__.pyc mymodule.py mymodule.pyc test 

mypackage/test: 
__init__.py __init__.pyc test_mymodule.py test_mymodule.pyc 

运行测试:

$ trial mypackage 
mypackage.test.test_mymodule 
    MyModuleTestCase 
    test_something ...              [OK] 

------------------------------------------------------------------------------- 
Ran 1 tests in 0.002s 

PASSED (successes=1) 

文件test_mymodule.py内:

from twisted.trial import unittest 

from mypackage.mymodule import MyTestSubject 

class MyModuleTestCase(unittest.TestCase): 
    def test_something(self): 
     pass 
+0

感谢目录,即工作,但父目录,所述一个含有mypackage中必须在PYTHONPATH,否则MyModule的是找不到的。 – mik80 2011-04-28 06:41:35

+0

为了完整起见,你能告诉我你正在用来运行测试的确切行,以及你运行它的当前工作目录吗? – jsw 2011-04-28 08:45:42

+0

当前工作目录只是linux上的用户目录,其中包含应用程序* .py文件的mypackage目录,以前运行我的sript的行是:trial test_mymodule.py,并在Windows上使用c:\​​ Python27 \ python.exe C:\ Python27 \脚本\ trial.py test_mymodule.py – mik80 2011-04-28 21:06:08