Комментарии 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 выяснить что именно мы там тестируем.
За популяризацию статей по тестированию - плюсик.
За корявый автоперевод - минус. Местами тяжело понять о чем речь, пока не переключишься в режим "кальки с английского". Проще читать оригинал. Понимаю, что не для всех, поэтому "плюсик" выше.
Идея хорошая. Реализация пострадала. Решили сделать рекламу сэкономив на переводчике? И в остальных аспектах вы поступаете так же? Нет, не хочу у вас работать.
Подтесты в Python