Ниже приведен более подробный раздел, но в основном кто-то заявил, что написанный Ruby DSL RSpec не может быть переписана в Python. Это правда? Если да, то почему?
Я хочу лучше понять технические различия между Ruby и Python.
Обновление: почему я задаю этот вопрос?
В Отключение от RSpec в обсуждении есть некоторые утверждения о том, что это "невозможно" воссоздать RSpec в Python. Я пытался сделать этот вопрос немного шире, надеясь узнать больше о технических различиях между Ruby и Python. Оглядываясь назад, возможно, мне следовало бы ужесточить вопрос, просто спросив, действительно ли невозможно воссоздать RSpec в Python, и если да, почему.
Ниже приведены лишь несколько цитат из обсуждения Отключение от обсуждения RSpec.
Начальный вопрос
В течение последних нескольких недель я много думал о RSpec и почему нет ясного, определенного ответа, когда кто-то спрашивает:
"Я ищу эквивалент Python RSpec. Где я могу найти такой вещь?"
Вероятно, наиболее распространенным (и понятным) ответом является то, что синтаксис Python не допустил бы такой вещи, тогда как в Ruby это возможно.
Первый ответ на начальный вопрос
Не синтаксис точно. Обезьяна Rspec передает каждый объект внутри своего объем, вставляя методы "should" и "should_not". Ты можешь сделать что-то в python, но вы не можете monkeypatch встроенных типов.
Другой ответ
Как вы полагаете, это невозможно. Mote и PySpec - просто причудливые способы чтобы назвать ваши тесты: слабые реализации одного крошечного угла RSpec. Моте использует ужасную магию; PySpec добавляет кучу шум, несущий домен. Ни один из них не поддерживает произвольный контекст строки. RSpec более тонкий, более выразительный, устраняет шум и это вполне разумная вещь для создания в Ruby.
Эта важная точка важна: это не только то, что RSpec возможно в Рубин; это действительно идиоматично.