Импорт не обрабатывается должным образом во время выполнения тестов носа в многопроцессорном режиме

Учитывая тестовый пример:

import unittest
import mock

class TestTest(unittest.TestCase):
  def test_test(self):
    print dir(__import__('google'))
    with mock.patch('google.appengine.api.urlfetch.fetch'):
      pass

-

$ nosetests --with-gae --processes=0
Ran 1 test in 0.187s
OK

-

$ nosetests --with-gae --processes=1
======================================================================
ERROR: test_test (test_test.TestTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/sadovnychyi/example/test_test.py", line 8, in test_test
    with mock.patch('google.appengine.api.urlfetch.fetch'):
  File "/usr/local/lib/python2.7/site-packages/mock.py", line 1252, in __enter__
    self.target = self.getter()
  File "/usr/local/lib/python2.7/site-packages/mock.py", line 1414, in <lambda>
    getter = lambda: _importer(target)
  File "/usr/local/lib/python2.7/site-packages/mock.py", line 1102, in _importer
    thing = _dot_lookup(thing, comp, import_path)
  File "/usr/local/lib/python2.7/site-packages/mock.py", line 1092, in _dot_lookup
    return getattr(thing, comp)
AttributeError: 'module' object has no attribute 'appengine'
-------------------- >> begin captured stdout << ---------------------
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'net']

Есть идеи, почему это происходит и как это исправить?

2 ответа

Решение

Так что я пропустил строку в nosegae.py:

del sys.modules['google']

Который уже зафиксирован на reload(sys.modules['google'])

https://github.com/Trii/NoseGAE/commit/82fe8b4cb2c037ffd441fa5bed8a6b84a066bbd2

Вопрос исчез.

AttributeError: у объекта 'module' нет атрибута 'appengine'

Это говорит о том, что GAE SDK расположен неправильно.

Проверьте инструкции по установке / использованию вашего SDK, путь к Python, структуру каталогов, настройки IDE (если вы его используете) - в зависимости от того, как вы планируете использовать SDK.

Также инструкции юнит тест / макет (я не могу их комментировать - еще не использовал их).

Например, вы можете попробовать использовать символическую ссылку на подкаталог SDK Google в /Users/sadovnychi/, но я не могу сказать, является ли это хорошим предложением для вашей настройки.

Другие вопросы по тегам