Как стать автором
Обновить

Комментарии 5

Вот и весь код. И не нужно возиться с импортами и классами.

Это вредные советы. Ненавижу, когда вместо ясных и понятных импортов и классов какая-то магия и чтобы понять, как работает функция из двух строчек, необходимо полчаса лопатить документацию (если она есть) и/или исходники.

В unittest эти зависимости можно выделить с помощью методов setUp() и tearDown(), чтобы их могли использовать все тесты в классе. Однако при этом вы можете нечаянно сделать зависимость теста от конкретного элемента данных или объекта неявной.

Не понимаю, что тут неявное, как раз очень все прямо и понятно.

Он подразумевает явное объявление зависимостей, которые остаются доступными для повторного использования благодаря фикстурам (fixtures).

А вот здесь как раз все весьма неявно. А если нужно запустить фикстуру в теле теста, нужно городить огород.

У pytest философия — это тесты без бойлерплейта. Фикстуры — мощная штука, но "магии" и неявности действительно многовато. IDE вроде PyCharm-а умеет работать с pytest, можно перескакивать на определение функций-фикстур, она знает о том, что фикстуры возвращают и т.п. Но в целом я согласен, что pytest в своём стремлении к минимизации написания кода-обвязки, сам по себе очень магический и неявный. Но лично мне он нравится сильно больше чем unittest — вербозный, монстроузный, перетянутый как есть из Java.


А если нужно запустить фикстуру в теле теста, нужно городить огород.

Ну не особо то и огород, по сути просто фикстура, возвращающая callable и всё.

В unittest мне не нравится главным образом, то, что он не следует питоновским соглашениям о менованию классов и методов.

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

А pytest в своем стремлении уменьшить количество строк кода максимально затрудняет чтение и понимание тестов. Вот это мне и не нравится.

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

Много полезной и актуальной информации, благодарю.

Когда нужны фикстуры

А как насчет Вэн нидэд фикстуры? Fixture - это фиксированный набор данных, а в случае с monkeypatch заглушка.

На мой взгляд эта статья не полна без пояснений о monkeypatch и assertpy. И ради всего святого используйте типы в сигнатурах, не на python 2 пишете же.

def test_my_stuff(monkeypatch: MonkeyPatch):
  # Arrange
  # Act
  # Assert
  pass
Зарегистрируйтесь на Хабре, чтобы оставить комментарий