Ваш код состоит из вычислительной части (создание строки запроса) и интерактивной части, где осуществляется фактическая связь с базой данных.Если эти две комбинации объединены, код выглядит следующим образом:
def fetchData(self):
query = ... some string building logic here
results = ... database access using query
В таком коде, просто для проверки логики построения строк в модульном тестировании, вы бы имитировали доступ к базе данных (чтобы избежать зависимостив базе данных в ваших юнит-тестах по разным причинам).В последующем интеграционном тестировании вы затем протестируете взаимодействие fetchData
с реальной базой данных.
Альтернативный подход состоит в извлечении алгоритмической части (создание строки запроса) в отдельный метод, такой какчто вы можете легко протестировать эту часть независимо друг от друга.
def buildQuery(self):
query = ... some string building logic here
return query
def fetchData(self):
query = self.buildQuery()
results = ... database access using query
Это упрощает ваше модульное тестирование, потому что для тестирования buildQuery
вам не нужно проверять базу данных.Опять же, при интеграционном тестировании вы должны затем проверить взаимодействие fetchData
с реальной базой данных.