Какой подход (подходы) Вы использовали для легких модульных тестов Python на Механизме Приложения?

Я думаю, что это зависит от Вашего фокуса. Несколько лет назад я купил набор Искусства Программирования Donald Knuth. После рассмотрения книг я понял в значительной степени, что все - доказательства исчисления. Если Вы интересуетесь разработкой Ваших собственных универсальных алгоритмов и доказательств для них, то я рекомендую способности понять вышеупомянутые книги начиная с, с чем Вы имели бы дело в том мире. С другой стороны, если Вы только хотите/нуждаетесь использовать различную сортировку/поиск/дерево/и т.д.... стандартные программы тогда большая нотация O как минимум, булева математика, и общая алгебра будет прекрасна. Если Вы имеете дело с 3D тогда геометрия и аккуратные также.

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

39
задан Alex Martelli 18 November 2009 в 15:39
поделиться

4 ответа

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

13
ответ дан 27 November 2019 в 02:53
поделиться

Я использую GAEUnit для своего приложения Google App Engine, и меня вполне устраивает скорость тестов. Что мне нравится в GAEUnit, и я уверен, что Webtest это делает, так это то, что он создает свою собственную версию для заглушек всего для тестирования, оставляя только ваши «живые» версии для тестирования.

Итак, ваше хранилище данных, которое вы можете использовать для разработки останется как есть, когда вы запустите свои тесты GAETests.

4
ответ дан 27 November 2019 в 02:53
поделиться

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

.
5
ответ дан 27 November 2019 в 02:53
поделиться

Я мог бы также добавить, что Fixture был очень полезно в моих модульных тестах. Он позволяет вам создавать модели с декларативным синтаксисом, которые он преобразует в сохраненные сущности, которые вы можете загружать в свои тесты. Таким образом, у вас будет один и тот же набор данных в начале каждого тестового примера !, что избавит вас от необходимости создавать данные вручную в начале каждого теста. Вот пример из документации Fixture: Для этой модели:

from google.appengine.ext import db

class Entry(db.Model):
    title = db.StringProperty()
    body = db.TextProperty()
    added_on = db.DateTimeProperty(auto_now_add=True)

Ваш прибор будет выглядеть так:

from fixture import DataSet

class EntryData(DataSet):
    class great_monday:
        title = "Monday Was Great"
        body = """\
Monday was the best day ever.
"""

Обратите внимание, однако, что я столкнулся со следующими проблемами: 1. Эта ошибка , но включенный патч исправляет ее. 2. Хранилище данных не сбрасывается по умолчанию между тестами. Поэтому я использую это для принудительного сброса для каждого тестового примера:

class TycoonTest(unittest.TestCase):
    def setUp(self):
        # Clear out the datastore before starting the test.
        apiproxy_stub_map.apiproxy._APIProxyStubMap__stub_map['datastore_v3'].Clear()    
        self.data = self.load_data()
        self.data.setup()
        os.environ['SERVER_NAME'] = "dev_appserver"
        self.after_setUp()

    def load_data(self):
        return datafixture.data(*dset.__all__)

    def after_setUp(self):
        """ After setup
        """
        pass

    def tearDown(self):
        # Teardown data.
        try:
            self.data.teardown()
        except:
            pass
3
ответ дан 27 November 2019 в 02:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: