2016-12-17 19 views
3

Я использую py.test для несколько нетрадиционного приложения. В принципе, я хочу, чтобы взаимодействие с пользователем проводилось с помощью print() и input() (это Python 3.5). Конечной целью является полуавтоматическое тестирование аппаратного и многослойного программного обеспечения, которое не может быть автоматически проверено даже в принципе. В некоторых тестовых случаях попросите специалиста по тестированию что-то сделать (подтвердите, введите или нажмите любую клавишу или подобное на консоли) или попросите их сделать простое измерение или визуально подтвердить что-то (ввести его на консоль).Как я могу заставить тесты py.test принимать интерактивный вход?

Пример того, что я (по наивности) хочу сделать:

def test_thingie(): 
    thingie_init('red') 
    print('Testing the thingie.') 
    # Ask the testing technician to enter info, or confirm that he has set things up physically 
    x = int(input('Technician: How many *RED* widgets are on the thingie? Enter integer:')) 
    assert x == the_correct_number 

Это работает, когда тестовый файл вызывается с pytest -s, чтобы предотвратить стандартный ввод и стандартный вывод захвата, но документированные средства (with capsys.disabled()) в документация py.test не работает, поскольку они влияют только на stdout и stderr.

Что можно сделать, используя код в модуле py.test, без параметров командной строки и в идеале для каждого теста?

платформа, для чего это стоит, это Windows, и я предпочел бы не иметь этот затирать или затерта оберткой стандартного ввода/из/все, что результатов от вложенных оболочек, редких раковин и т.д.

+0

Какие испытания вы хотите сделать? Модульные тесты, интеграционные тесты, тесты поведения, тесты юзабилити, ...? Похоже, вы пытаетесь смешать все. Кстати, каждое программное обеспечение может быть протестировано в принципе. –

+0

То, что я пытаюсь сделать * специально *, делает встроенную работу input() в корпусах Pytest так же, как в интерактивном питоне или скриптах. – ikrase

ответ

-2

Существует пакет, который точно соответствует счету.

https://github.com/wooey/Wooey

Wooey является простой веб-интерфейс для запуска сценариев Python строки команд. Думай об этом как простой способ, чтобы получить свои скрипты на веб-

Демо-сайт: https://wooey.herokuapp.com/

+0

Я действительно не вижу, как это помогает моему приложению. Я вообще не работал с сценариями командной строки. – ikrase

+0

Это даст вам веб-интерфейс для ввода «ввода», для которого вывод будет на той же веб-странице. Я думал, это то, что вы хотели. Попробуйте демонстрационный сайт: https://wooey.herokuapp.com/ –