Отключить приборы Pytest - PullRequest
0 голосов
/ 02 декабря 2018

Возможно ли отключить приборы в pytest?

Причина, по которой я хочу это сделать, заключается в том, что я использую свою собственную структуру приспособлений, в настоящее время похожую на эту (плюсы и минусы различных механизмов фиксаций не 'В центре внимания этого вопроса):

import functools

def with_fixtures(test_func):
    @functools.wraps(test_func)
    def wrapper(self, *args, **kwargs):
        # This simplified code reproduces the problem -- the real implementation passes
        # an object instead of a dummy
        return test_func(self, "dummy fixtures", *args, **kwargs)
    return wrapper

class Test:
    @with_fixtures
    def test(self, fixtures):
        print("fixtures %s" % (fixtures, ))
        pass

Если я запускаю этот тест с другой платформой, мой with_fixtures декоратор передает объект фикстуры в тест.Если я запускаю pytest на этом, я получаю это:

def test(self, fixtures):
E       fixture 'fixtures' not found

Чтобы отключить приборы pytest, я бы предпочел локально пометить отдельные тесты декоратором, чем добавлять код в специальный файл, такой как conftest.py намои тесты не имеют явной зависимости, так что на местном уровне легче понять, почему тест ведет себя так, как он.

1 Ответ

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

если вы хотите скрыть свои аргументы от pytest, используйте объекты подписи из funcsigs / inspect, которые сообщают, что у pytest функция не имеет аргументов

альтернативно имеют собственные тестовые элементы, которые не используют систему фикстур

pytest в настоящее время не поддерживает замену системы приборов, поэтому вам придется с ней бороться

...