Тестирование вишневого дерева с носом / приспособлением / веб-тестом (амидоинитрит) - PullRequest
2 голосов
/ 26 января 2011

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

У меня есть вспомогательная функция init_model(test = False) в файле, где создаются все модели. Он подключается к производственной или тестовой (если test == True или cherrypy.request.app.test == True) базе данных и вызывает create_all

Затем я создал базовый класс для таких тестов:

class BaseTest(DataTestCase):
def __init__(self):
    init_model(True)
    application.test = True
    self.app = TestApp(application)
    self.fixture = SQLAlchemyFixture(env = models, engine = meta.engine, style = NamedDataStyle())
    self.datasets = (
        # all the datasets go here
        )

А сейчас я делаю свои тесты, создавая дочерние классы BaseTest и вызывая self.app.some_method()

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

1 Ответ

1 голос
/ 27 января 2011

Это выглядит в основном как обычный тестовый клей для системы любого размера. Другими словами, это не слишком сложно.

На самом деле, я бы предложил немного больше сложности в одном отношении: я думаю, вы найдете, что настройка новой базы данных в каждом дочернем тестовом классе будет очень медленной. Чаще всего по меньшей мере все таблицы настраиваются один раз за прогон, а не один раз за класс. Затем каждый метод тестирования создает все необходимые ему данные для собственного использования, и / или вы запускаете каждый тестовый пример в транзакции и откатываете все обратно в блоке finally:.

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