Как Удостовериться, что код все еще работает после рефакторинга (Динамический язык)

Flask url_for полагается на контекст запроса, вы не можете поместить его вне функции представления, попробуйте переместить цикл for в функцию home.

Кроме того, вместо присоединения HTML-кода в Python, вы должны написать цикл for непосредственно в шаблоне (index.html) с синтаксисом Jinja. Например:


{% for dog in dogs %}
    Put your html code here.
    You can generate URL like this: 
{% endfor %}

также не забудьте передать переменную dogs с render_template:

@app.route('/')
def home():
     return render_template("index.html", dogs=dogs)

Прочитайте документацию Jinja для получения более подробной информации.

7
задан Graviton 27 March 2009 в 06:55
поделиться

4 ответа

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

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

17
ответ дан 6 December 2019 в 06:25
поделиться

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

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

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

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

10
ответ дан 6 December 2019 в 06:25
поделиться

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

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

Править:

Вы ответили и сказали использование PHP и Python.

Если это - селен использования веб-приложения для создания тестов в браузере. Сначала Вам просто нужен Селен IDE. Поместите все свои тесты в единственный Набор тестов так, чтобы можно было легко выполнить их всех. Когда список растет, можно начать изучать Селен Сетка Селена и RC.

1
ответ дан 6 December 2019 в 06:25
поделиться

1) For Python use PyUnit for PHP phpunit. 2) TDD approach is good but also making tests after writing code is acceptable. 3) Also use refactoring tools that are available for Your IDE they do only safe refactorings. In Python You have rope (this is library but have plugins for most IDEs). 4) Good books are: 'Test-Driven Development by example' Best 'Expert Python Programing' Tarek Ziade (explain both TDD and refactoring)

google tdd and database to find a good book about TDD approach for developing databases.

Add info for mocks you are using. AFAIK mocks are needed only when database or network is involved. But normally unit test should cover small pice of code (one class only) sometimes two classes so no mockup needed !!

0
ответ дан 6 December 2019 в 06:25
поделиться
Другие вопросы по тегам:

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