Благодарю. Другие ответы у меня не сработали, так как они, кажется, используют предыдущую версию Python / pytest.

пешно используем pytest (Python 3) для запуска тестового набора, тестирующего некоторые аппаратные устройства (электроника). Для подмножества этих тестов нам нужно, чтобы тестер изменил аппаратное обеспечение, а затем изменил его обратно. Мой подход состоял в том, чтобы использовать приспособление уровня модуля, прикрепленное к рассматриваемым тестам (которые все находятся в отдельном модуле), с двумяinput звонки:

@pytest.fixture(scope="module")
def disconnect_component():
    input('Disconnect component, then press enter')
    yield  # At this point all the tests with this fixture are run
    input('Connect component again, then press enter')

При запуске этого я получаюOSError: reading from stdin while output is captured, Я могу избежать этого, вызвав pytest с--capture=noи подтвердил, что мой подход работает, то есть я получаю первый запрос до рассматриваемого подмножества тестов, а второй - после их выполнения.

Большим недостатком является то, что это деактивирует захват stdin / stderr для всего набора тестов, на которые полагаются некоторые другие тесты.

Я также пытался использоватьcapsys.disabled (документы) как это

@pytest.fixture(scope="module")
def disconnect_component(capsys):
    with capsys.disabled():
        input('Disconnect component, then press enter')
        yield  # At this point all the tests with this fixture are run
        input('Connect component again, then press enter')

но при запуске этого я получаюScopeMismatch: You tried to access the 'function' scoped fixture 'capsys' with a 'module' scoped request object, involved factories.

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

Ответы на вопрос(3)

Ваш ответ на вопрос