Уровень доступа к базе данных модульного тестирования - PullRequest
2 голосов
/ 18 февраля 2012

Я знаю, что этот вопрос задавался много раз ранее, но у меня есть несколько конкретных примеров кода, и я хотел знать, имеет ли смысл их модульное тестирование:

class FooAPI(object):

    def create(self, prop1, prop2, prop3, prop4, prop5):
        sql = "INSERT INTO foo (prop1, prop2, prop3) VALUES (?, ?, ?)"
        self.connection.execute(sql, (prop1, prop2, prop3))

        foo_id = self.connection.insert_id()

        sql = "INSERT INTO foo_settings (foo_id, prop4, prop5) VALUES (?, ?, ?)"
        self.connection.execute(sql, (foo_id, prop4, prop5))

        return foo_id

    def update(self, foo_id, prop1, prop2, prop3, prop4, prop5):
        "Update code similar to above"

    def delete(self, foo_id):
        sql = "DELETE FROM foo WHERE foo_id = ?"
        self.connection.execute(sql, (foo_id,))

    def find(self, foo_id=None, prop1=None):
        "Find objects by ID or by prop1"

Имеет ли смысл использовать юнит-проверить приведенный выше код, и как можно поступить об этом.Здесь есть два усложняющих фактора:

  • Сама база данных не является тривиальной, и в настоящее время у меня нет простого способа создать базу данных со всеми тестовыми данными
  • Схема развивается, что означает, чтоневозможно создать тестовую базу данных раз и навсегда.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2012

Модульные тесты (т.е. без базы данных), а не IMO.Интеграционные тесты, как правило, я считаю хорошей идеей.

Сама база данных не является тривиальной, и в настоящее время у меня нет простого способа создать базу данных со всеми тестовыми данными

Как вы поддерживаете схему?Вы должны сделать это правильно, прежде чем идти вперед.Можете ли вы перейти от пустой базы данных к базе данных с хотя бы схемой за один автоматизированный шаг?Я предполагаю, что Liquibase не может помочь вам, если у вас нет хорошей системы для поддержания базы данных в актуальном состоянии.

Теперь тестовые данные - сохраняйте необходимые данные небольшими.

0 голосов
/ 19 февраля 2012

В зависимости от того, кого вы спрашиваете, всегда имеет смысл тестировать код. Тем не менее, то, что вы делаете здесь, довольно просто и может не нуждаться в тестировании. Тем не менее, я бы сказал, что даже если вам трудно настроить тестовую базу данных, вам, скорее всего, она понадобится позже, так что вы можете сделать это сейчас, когда не пытаетесь сделать что-то сложное. Также выяснилось, что схема развивается. Почти неизбежно, что со временем произойдут серьезные изменения в базе данных, и вам просто нужно с этим справиться.

Единственная веская причина, по которой я могу не проверять, - это если вы собираетесь в скором времени полностью изменить базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...