Я работаю над переносом приложения Python 2 App Engine из NDB в облачную NDB в качестве предвестника перехода на Python 3. В соответствии с другими рекомендациями я заменял использование Testbed на локальное хранилище данных Эмулятор, и по большей части это работает. Я сталкиваюсь с ошибкой, которая начинает появляться примерно на полпути через 580 модульных тестов в нашем наборе тестов. Может показаться, что сообщение об ошибке указывает на то, что эмулятор не может справиться с запросами быстрого сброса, поступающими от метода setUp () теста.
Все мои тесты происходят от базового класса со следующим setUp () метод:
NDB_CLIENT = ndb.Client(project='myproject')
NDB_CLIENT.host = 'localhost:8089'
NDB_CLIENT.secure = False
class MyTestCase(unittest.TestCase):
def setUp(self):
self.testapp = webapp2.WSGIApplication([])
# clear datastore
requests.post('http://localhost:8089/reset')
self.ndb_context = NDB_CLIENT.context()
self.ndb_context.__enter__()
Я запускаю облачное хранилище данных в окне терминала с помощью следующей команды:
$ gcloud beta emulators datastore start --no-store-on-disk --consistency=1.0 --host-port=localhost:8089
Примерно в середине набора тестов тесты начинаются с ошибкой эта ошибка:
ERROR: test_a_thing (my_test.Test)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test/my_test.py", line 11, in setUp
File "/Users/myuser/Projects/MyProject/test/_base_test.py", line 29, in setUp
File "/Users/myuser/Projects/MyProject/lib/requests/api.py", line 119, in post
File "/Users/myuser/Projects/MyProject/lib/requests/api.py", line 61, in request
File "/Users/myuser/Projects/MyProject/lib/requests/sessions.py", line 530, in request
File "/Users/myuser/Projects/MyProject/lib/requests/sessions.py", line 643, in send
File "/Users/myuser/Projects/MyProject/lib/requests/adapters.py", line 516, in send
ConnectionError: HTTPConnectionPool(host='localhost', port=8089): Max retries exceeded with url: /reset (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x113715610>: Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known',))
Если я запускаю какой-либо из этих тестовых файлов самостоятельно, они все проходят. Я исследовал и даже удалил тестовые файлы, работающие примерно при появлении ошибок, но это тоже не помогло Мне неизвестен какой-либо другой способ сброса хранилища данных между тестами, и выход эмулятора хранилища данных в терминале вообще не указывает на наличие проблемы, поэтому я не знаю, как ее устранить.