Вопрос

Какие самые продвинутые фреймворки и инструменты доступны для python для практики управляемой поведением разработки? Особенно было бы полезно найти такие инструменты, как rspec и mocha для ruby.

Это было полезно?

Решение

Ян Бикинг рекомендует использовать doctest для дизайна, ориентированного на поведение:

Лично я склонен использовать нос и макет voidspace в стиле дизайна, ориентированного на поведение , В частности, спецификация плагин для носа отлично подходит для BDD.

Другие советы

Салат означает быть похожим на огурец инструментом для python: http://lettuce.it/

Вы можете получить источник по адресу github.com/gabrielfalcao/lettuce

Я действительно рекомендую вести себя .

В поисках клона огурца для Python я начал использовать салат, но нашел его довольно неуклюже разработанной копией. Очень непитонично.

Потом я обнаружил, что веду себя хорошо, и был очень доволен этим.

Я рекомендую вам использовать набор инструментов, разработанных, чтобы помочь программистам в практике BDD и TDD. Этот набор инструментов состоит из: pycukes , specloud , ludibrio и should-dsl .

Should-DSL даст вам RSpec-подобные ожидания. Все, что вы можете сделать с API ожидания RSpec, следует также и в случае с. Вы можете получить последнюю версию с Github .

SpecLoud поможет вам в проведении юнит-тестов, подобных BDD. Вы можете установить его, выполнив

pip install specloud

Ludibrio - это библиотека для тестовых двойников (Mocks, Stubs и Dummies). Установите его через

pip install ludibrio

И PyCukes является основным инструментом для BDD. Сценарии будут запущены и т. Д. Опять же,

pip install pycukes

Для получения дополнительной информации, пожалуйста, прочитайте документацию по инструментам на PyPi .

Отличный пост и ответы. Просто хотел обновить, чтобы включить Freshen в этот список, так как я читаю pycukes, больше не поддерживается. Хороший пост об использовании BDD и Django с Freshen: здесь .

Вы можете использовать " уверен " для выразительных утверждений (как в RSpec)

Проект Pyccuracy - это попытка предоставить домен-специфический язык для BDD в Python.

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

Мне очень нравится Pyccuracy . Я реализую это на проекте среднего размера в эти дни.

Попробуйте pyspecs . Создание тестов, легко читаемых и постоянно выполняемых во время разработки, было двумя из моих главных целей при создании этого проекта.

Тестовый код:

from pyspecs import given, when, then, and_, the, this

with given.two_operands:
    a = 2
    b = 3

    with when.supplied_to_the_add_function:
        total = a + b

        with then.the_total_should_be_mathmatically_correct:
            the(total).should.equal(5)

        with and_.the_total_should_be_greater_than_either_operand:
            the(total).should.be_greater_than(a)
            the(total).should.be_greater_than(b)

    with when.supplied_to_the_subtract_function:
        difference = b - a

        with then.the_difference_should_be_mathmatically_correct:
            the(difference).should.equal(1)

Вывод на консоль:

# run_pyspecs.py

  | • given two operands 
  |   • when supplied to the add function 
  |     • then the total should be mathmatically correct 
  |     • and the total should be greater than either operand 
  |   • when supplied to the subtract function 
  |     • then the difference should be mathmatically correct 

(ok) 6 passed (6 steps, 1 scenarios in 0.0002 seconds)

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

Если моя интерпретация верна, вы можете получить среду BDD, просто переименовав методы в любом реализация xUnit . Так что просто используйте стандартную библиотеку unittest . .

РЕДАКТИРОВАТЬ: быстрый Google обнаружил Behavior модуль в Магазин сыров . Дальнейший поиск BDD там не нашел ничего другого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top