приспособление pytest для определенных тестовых случаев - PullRequest
1 голос
/ 08 апреля 2020

Наличие тестового класса и тестовых случаев, как показано ниже:

class TestSomething():
    ...
    @pytest.fixture(autouse=True)
    def before_and_after_testcases(self):
        setup()
        yield
        cleanup()

    def test_abc_1():
        ...
    def test_abc_2():
        ...
    def test_def_1():
        ...
    def test_def_2():
        ...

Проблема в том, что before_and_after_testcases() будет выполняться для каждого тестового случая в тестовом классе. Можно ли разрешить применение прибора к тестовым кейсам с шаблоном abc только в имени функции? Устройство не должно работать на test_def_xxx, но я не знаю, как исключить эти тестовые случаи.

1 Ответ

2 голосов
/ 08 апреля 2020

Приспособление autouse=True автоматически применяется ко всем тестам, чтобы удалить это автоматическое приложение, вы удалите autouse=True

, но теперь это приспособление не применяется ни к одному!

чтобы вручную применить этот прибор к нужным тестам, вы можете:

  1. добавить имя этого прибора в качестве параметра (если вам нужно значение, которое имеет прибор)
  2. Украсьте тесты, которым нужен этот прибор, с помощью @pytest.mark.usefixtures('fixture_name_here')

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


отказ от ответственности: я pytest разработчик, хотя я не думаю, что это полностью относится к этому ответу, ТАК просто требует раскрытия информации о принадлежности

...