Множество приспособлений pytest против одного большого приспособления «контейнер» - PullRequest
0 голосов
/ 16 декабря 2018

У нас есть большой проект на python, который тестируется с использованием pytest , в настоящее время с классами стилей unittest, и мы начали переносить его на модульные функциональные тесты.

У нас естьспор о том, должны ли мы:

  1. Разделить наш большой базовый класс тестирования на множество небольших независимых тестовых приспособлений; или
  2. Поддерживайте один большой прибор, который лениво импортирует все другие приборы.

Плюсы для многих приборов:

  • Модульный и, вероятно, простой в обслуживании
  • Каждый тест использует только то, что ему нужно

Плюсы для одного большого прибора:

  • Меньше стандартного кода, в каждом тесте есть только одно дополнительное ключевое слово arg

Что нам делать?Любые мнения приветствуются, если они объяснены.Спасибо:)

1 Ответ

0 голосов
/ 17 декабря 2018

Использование специальных светильников имеет много преимуществ по сравнению с большим.Благодаря этому pytest приобрел свою популярность.

  1. Различные приборы могут воспроизводить различные взаимоисключающие состояния тестируемой системы.Это полезно, когда вы хотите проверить различные случаи поведения вашей системы.Одиночный прибор не дает такой гибкости.
  2. Pytest позволяет гибко собирать вызов для прибора, , когда один прибор использует результаты выполнения другого .Декомпозиция является эффективным шаблоном программирования, и тесты не являются исключением.
  3. Параметры в pytest могут быть параметризованы , это очень полезная функциональность, но ее применение будет невозможно, если вы сделаете один большой прибордля всех тестов.
  4. Conftest.py - это каталог, специфичный для pytest. Таким образом, фиксаторы в pytest могут быть глобальными (расположены в conftest), локальными (расположены внутри тестового модуля) и промежуточными (находится в контесте на уровне пакета).Это позволяет вам повторно использовать общий код, не теряя при этом гибкости в определенных случаях.
  5. Светильники имеют область действия (функция, класс, модуль, сессия), что дает дополнительную гибкость.

Коренная идея каркаса pytest - это использование приборов на тех уровнях, где это необходимо.Это большое преимущество перед стилем xUnit, но если вы не используете эти преимущества, переход на pytest не имеет смысла.

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