Я думаю, что это зависит от Вашего фокуса. Несколько лет назад я купил набор Искусства Программирования Donald Knuth. После рассмотрения книг я понял в значительной степени, что все - доказательства исчисления. Если Вы интересуетесь разработкой Ваших собственных универсальных алгоритмов и доказательств для них, то я рекомендую способности понять вышеупомянутые книги начиная с, с чем Вы имели бы дело в том мире. С другой стороны, если Вы только хотите/нуждаетесь использовать различную сортировку/поиск/дерево/и т.д.... стандартные программы тогда большая нотация O как минимум, булева математика, и общая алгебра будет прекрасна. Если Вы имеете дело с 3D тогда геометрия и аккуратные также.
я склонен быть больше на стороне использования, чем создание доказательств, и в то время как я хотел бы думать, что я сделал некоторые умные вещи за эти годы, я никогда не садился и разрабатывал новую программу сортировки. Лучший совет, который я могу дать, изучают то, в чем Вы нуждаетесь для своего поля, но представляете себя более высоким уровням, таким образом, Вы знаете, что это существует и сколько еще там должен учиться, Вы не получите много роста иначе.
Вам не нужно писать свои собственные заглушки - SDK включает их, поскольку они используются для эмуляции рабочих API. Не все из них подходят для использования в юнит-тестах, но большинство из них подходят. Посмотрите этот код , чтобы увидеть пример кода установки / удаления, который вам нужен для использования встроенных заглушек.
Я использую GAEUnit для своего приложения Google App Engine, и меня вполне устраивает скорость тестов. Что мне нравится в GAEUnit, и я уверен, что Webtest это делает, так это то, что он создает свою собственную версию для заглушек всего для тестирования, оставляя только ваши «живые» версии для тестирования.
Итак, ваше хранилище данных, которое вы можете использовать для разработки останется как есть, когда вы запустите свои тесты GAETests.
NoseGAE является носовым плагином, который поддерживает юниттесты, автоматически настраивая среду разработки и тестовое хранилище данных для вас. Очень полезно при разработке на dev_appserver.
.Я мог бы также добавить, что 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