небольшое разрабатываемое мной приложение использует модуль, который я написал для проверки определенных веб-сервисов через REST API. Я пытался добавить к нему юнит-тесты, чтобы не ломать вещи, и наткнулся на проблему.
Я использую много соединений с сигнальными слотами для асинхронного выполнения операций. Например, типичным тестом будет (псевдопифон) с postDataDownloaded в качестве сигнала:
def testConnection(self):
"Test connection and posts retrieved"
def length_test():
self.assertEqual(len(self.client.post_data), 5)
self.client.postDataReady.connect(length_test)
self.client.get_post_list(limit=5)
Теперь unittest сообщит, что этот тест будет «в порядке» при запуске, независимо от результата (так как вызывается другой слот), даже если завершение не выполнено (я получу необработанную ошибку AssertionError). Пример, когда сознательно не удается выполнить тест:
Test connection and posts retrieved ... ok
[... more tests...]
OK
Traceback (most recent call last):
[...]
AssertionError: 4 != 5
Слот внутри теста - просто эксперимент: я получаю те же результаты, если он снаружи (метод экземпляра).
Я также должен добавить, что различные методы, которые я вызываю, все делают HTTP-запросы, что означает, что они занимают немного времени (мне нужно смоделировать запрос - в то же время я использую SimpleHTTPServer для фальсификации соединений и дать им правильные данные).
Есть ли способ обойти эту проблему?