Я тестирую единицы Python
google cloud datastore
с использованием py.test
в PyCharm
. Код работает локально на datastore emulator
проблем .The являетсяпроблемы с тестированием и отладочным кодом хранилища данных в python с использованием py.test
- Я должен положить несколько
time.sleep(num_secs)
после кода, который делаетput_multi()
,put()
и т.д., и запустить код под режимом отладки происходит построчно, чтобы проверить результаты так чтоassert
не подведет, так как даже если код работает правильно, результат вернется сemulator
с использованиемquery.fetch()
не отражает изменений вdatastore
. Я понял, что может произойти состояние гонки между иdatastore simulator
. Отсюда (большая?) Задержка в внесении изменений в силу? - Иногда, даже в режиме отладки и используя
emulator
, я столкнулся сHTTP Error 404: Service Unavailable
. Затем мне нужно включить виртуальные машиныCompute Engine
, и поэтому код может снова работать, даже отключив виртуальные машины. Это очень странно. Обратите внимание, что это произошло, когдаApp Engine
уже связан сproject_id
.
Мне интересно, что это лучший способ для отладки и тестирования datastore
код в Python
.
Параметр 'num_secs' установлен в' time.sleep() 'не согласуется, иногда это может быть 1, 3 или даже 10 и тестирование блока все еще может потерпеть неудачу из-за хранилище данных не отражало изменений, так что самое лучшее значение может быть установлено в флагом '--consistency'? – daiyue
'1'? Но я бы поставил под сомнение обоснованность ваших тестов - что вы тестируете? В реальной жизни код, выполняющий то, что вы делаете в этих тестах, также может потерпеть неудачу. Код должен быть подготовлен, чтобы иметь дело с возможной согласованностью, таким образом, передавая вместе с 0.9 ... –
Мой код использует 'datastore' для реализации некоторых базовых операций/методов базы данных, например. 'add_row',' update_row', 'delete_row' и т. д. в' python'. Тестирование - это просто проверка этих методов, утверждая, что результат соответствует ожидаемому значению. Просто бывает, что эмулятор «хранилища данных» имеет некоторое отставание в отражении результатов этих операций. Следовательно, тестирование может завершиться неудачей, так как он не получит желаемого результата от эмулятора. – daiyue