ward — python фреймворк для тестирования, взявшийся исправить все недостатки pytest. Все фичи одинаково интересные и сомнительные :)
Использует цвета для диффов, статуса и прочего. Почему-то pytest до сих пор боится цвета использовать, хотя цветной вывод, кажется, уже даже на всех CI поддерживается. Думаю, потому что тогда сложно результат копировать в чаты.
Название функции может быть любым, а указать, что это тест, и задать его имя нужно с помощью декоратора:
@test('test name')
. Интересно, как тогда запустить из консоли отдельный тест.Фикстуры определяются не по имени аргумента функции, а по его значению по умолчанию. Например,
def _(expected=user_fixture):
. Так их становится проще найти, “explicit better than implicit”, но mypy (ну и IDE, соответственно) может с такого беситься. Мол, зачем callable в str присваиваешь? Хотя если сделают простой плагин для mypy, будет даже лучше.Параметризация… Это лучше показать:
num_chars=each(20, 11, 10, 5),
expected=each(s, s, "hello w...", "he..."),
):```
Это вот разложится в 4 кейса. Все как-то взъелись на параметризацию в pytest, но мне кажется, что лучше не сделать. Этот вот подход в ward работает только на простых примерах, когда параметров не больше трёх и кейсов всего ничего. Но у меня обычно параметризация содержит значений 20, а в одном случае было больше 400, и вот такой подход превратится во что-то совершенно ужасное.
В общем, кто-то взялся бороться с магичностью pytest, и это здорово. И пусть пока получилось не очень, но всё ещё впереди. Легко читаемый цветной вывод диффов больше всего радует. Так что для следующего pet-проекта попробуй ward, вдруг понравится :)