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

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

Спасибо! Крайне интересная интерпретация. Главное, что я в ней вижу, это динамическую параметризацию, и с этой проблемой я безуспешно боролся многие годы. Либо выковыривать код на уровне generate tests, либо нет.

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

import os

def test_users(host, subtests):
    for user in os.listdir('/home'):
        with subtests.test(user=user):
          assert host.user(user).exists
Hidden text

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

Божественно!

subtests нужен там, где есть динамическая параметризация в тест тайме (не в collect time). Ура! Ура!

А можете чуть более расширено пояснить свою мысль? Потому что если взять ваш пример как есть, то параметризировать его не сложнее

@pytest.mark.parametrize("user", os.listdir("/home"))
def test_users(host, user):
    assert host.user(user).exists


Но я наверно что-то упустил?

Ой, это я упустил.

def test_users(host, subtests):
    for user in host.run("ls /home").splitlines():
        with subtests.test(user=user):
          assert host.user(user).exists

Т.е. параметризация по результатам исполнения фикстуры. host - параметризируется сервером (одним из 50, например), а дальше мы хотим уже в test time выяснить что именно мы там тестируем.

Ага, увидел, так действительно выглядит значительно проще

За популяризацию статей по тестированию - плюсик.

За корявый автоперевод - минус. Местами тяжело понять о чем речь, пока не переключишься в режим "кальки с английского". Проще читать оригинал. Понимаю, что не для всех, поэтому "плюсик" выше.

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

Мне важно было быть увиденным код и быть услышанным название библиотеки.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий