Python 无法使用nosegae导入django包
我正在尝试开始使用nosegae,但是我遇到了这样一个问题:在使用django时,即使是最简单的情况,我也无法让它通过 在没有-without sandbox标志的情况下运行时,以下两个测试都会失败Python 无法使用nosegae导入django包,python,google-app-engine,nose,Python,Google App Engine,Nose,我正在尝试开始使用nosegae,但是我遇到了这样一个问题:在使用django时,即使是最简单的情况,我也无法让它通过 在没有-without sandbox标志的情况下运行时,以下两个测试都会失败 def test_import_django (): import django def test_import_django_http (): import django.http 然而,如果我真的使用-没有沙盒,至少第一次测试通过 myproj.tests.test_im
def test_import_django ():
import django
def test_import_django_http ():
import django.http
然而,如果我真的使用-没有沙盒,至少第一次测试通过
myproj.tests.test_import_django ... ok
myproj.tests.test_import_django_http ... ERROR
======================================================================
ERROR: myproj.tests.test_import_django_http
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\nose-1.1.2-py2.7.egg\nose\case.py", line 1
97, in runTest
self.test(*self.arg)
File "C:\Users\User\Desktop\TDD_GAE\myproj\tests.py", line 5, in test_import_d
jango_http
import django.http
File "C:\Program Files (x86)\Google\google_appengine\lib\django_1_2\django\htt
p\__init__.py", line 9, in <module>
from mod_python.util import parse_qsl
File "C:\Python27\lib\site-packages\nosegae-0.1.9-py2.7.egg\nosegae.py", line
199, in find_module
mod_path = self.find_mod_path(fullname)
File "C:\Python27\lib\site-packages\nosegae-0.1.9-py2.7.egg\nosegae.py", line
251, in find_mod_path
_sf, path, _desc= self._imp.find_module(top, None)
AttributeError: 'str' object has no attribute 'find_module'
堆栈跟踪的一部分是
File "C:\Python27\lib\pdb.py", line 72, in __init__
import readline
请注意,django.http的uuu init_uuuu中的导入也是堆栈跟踪的一部分阅读有关django测试的内容
据我所知,最好使用django附带的unittest或DoctTest,因为它对django特定的测试有一些改进,比如表单字段输出测试和一些数据库特性。Hovewer这不是必需的,如果您想继续使用nose,请认为您错过了django环境设置:
from django.test.utils import setup_test_environment
setup_test_environment()
此行需要在./manage.py-test之外运行测试
UPD
是的,我以前的想法是错的。所以我刚刚挖掘了鼻子和鼻子gae的来源,我想-检查你们的鼻子版本中的HardenedModuleShake定义,因为在鼻子的躯干中我发现了以下内容:
class HardenedModulesHook(object):
...
def __init__(self,
module_dict,
imp_module=imp,
os_module=os,
dummy_thread_module=dummy_thread,
pickle_module=pickle):
...
这就给出了以下结果-当noseGAE插件begin方法被执行时->self.\u install\u hookdev\u appserver.hardenedModulesShake被调用,它声明了混合钩子类并创建了它的实例,比如self.hook=Hooksys.modules,self.\u路径。这是一个例外,你有:
_sf, path, _desc= self._imp.find_module(top, None)
AttributeError: 'str' object has no attribute 'find_module'
所以我认为nose gae可能有问题:阅读Django测试
据我所知,最好使用django附带的unittest或DoctTest,因为它对django特定的测试有一些改进,比如表单字段输出测试和一些数据库特性。Hovewer这不是必需的,如果您想继续使用nose,请认为您错过了django环境设置:
from django.test.utils import setup_test_environment
setup_test_environment()
此行需要在./manage.py-test之外运行测试
UPD
是的,我以前的想法是错的。所以我刚刚挖掘了鼻子和鼻子gae的来源,我想-检查你们的鼻子版本中的HardenedModuleShake定义,因为在鼻子的躯干中我发现了以下内容:
class HardenedModulesHook(object):
...
def __init__(self,
module_dict,
imp_module=imp,
os_module=os,
dummy_thread_module=dummy_thread,
pickle_module=pickle):
...
这就给出了以下结果-当noseGAE插件begin方法被执行时->self.\u install\u hookdev\u appserver.hardenedModulesShake被调用,它声明了混合钩子类并创建了它的实例,比如self.hook=Hooksys.modules,self.\u路径。这是一个例外,你有:
_sf, path, _desc= self._imp.find_module(top, None)
AttributeError: 'str' object has no attribute 'find_module'
因此,我认为nose gae可能有问题:不幸的是,这没有帮助-导入设置测试环境失败,出现了相同的错误是的,我试图深入了解您的问题-请参阅我文章中的UPD。不幸的是,这没有帮助-导入设置测试环境失败,出现了相同的错误是的,我试图理解你的问题很深——请看我帖子中的UPD。