TDD с большими данными в Python - PullRequest
2 голосов
/ 11 марта 2012

Интересно, может ли TDD помочь в моем программировании?Однако я не могу использовать его просто, поскольку большинство моих функций принимают большие сетевые объекты (множество узлов и ссылок) и выполняют над ними операции.Или я даже читаю таблицы SQL.В большинстве случаев это не логика (то есть не семантические ошибки), а вызовы некоторых функций после рефакторинга:)

Как вы думаете, я могу использовать TDD с такими данными?Что вы предлагаете для этого?(фальшивые фреймворки и т. д.?) Буду ли я каким-то образом брать реальные данные, обрабатывать их функцией, проверять вывод, сохранять состояния ввода / вывода в каком-то фиктивном объекте, а затем писать тест для них?Я имею в виду, на всякий случай, я не могу предоставить вводимые вручную данные.

Я еще не запустил TDD, поэтому ссылки приветствуются:)

Ответы [ 2 ]

3 голосов
/ 11 марта 2012

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

Работа с сетевыми объектами немного сложнее, но обычно включает в себя их заглушку (то есть полное удаление внутренней функциональности) или насмешкуих так, чтобы возвращался фиксированный набор известных данных.

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

Я не знаю каких-либо специфичных для Python ресурсов TDD, но в целом отличный ресурс по TDD - «Разработка через тестирование: практическое руководство»по Coad.В качестве языка используется Java, но принципы те же.

1 голос
/ 11 марта 2012

большинство моих функций занимают большие сетевые объекты

Не зная ничего о вашем коде, трудно оценить это утверждение, но вы, возможно, захотите изменить дизайн своего кода, чтобы было проще проводить модульное тестирование, разложив его на более мелкие методы. Хотя некоторые высокоуровневые методы могут иметь дело с этими проблемными большими объектами, возможно, низкоуровневые - нет. Затем вы можете выполнить модульное тестирование этих низкоуровневых методов, полагаясь на интеграционные тесты для тестирования высокоуровневых методов.


Отредактировано:

Прежде чем приступить к работе с TDD, вы можете попробовать добавить несколько юнит-тестов.

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