Протестируйте программу, которая использует tty stdin и stdout

У меня есть программное обеспечение, состоящее из двух половинок: одна — это python, работающая на первом компьютере, другая — cpp, работающая на второй.
Они общаются через последовательный порт (tty).

Я хотел бы проверить сторону Python на моем компьютере, предоставив ему правильные данные и посмотреть, будет ли он работать так, как ожидалось.

Я начал использовать подпроцесс, но потом возникла проблема: какие stdin и stdout я должен предоставить?

cStringIO не работает, потому что нет fileno()

ТРУБА тоже не работает, потому что select.select() говорит, что есть что почитать, даже если ничего не отправлено

У вас есть какие-нибудь намеки? Есть ли поддельный модуль tty, который я могу использовать?

5

Решение

В идеале вы должны сделать это и просто протестировать поведение, не слишком полагаясь на терминальный ввод-вывод. Ты можешь использовать mock.patch для этого. Скажи, что хочешь проверить t_read:

@mock.patch.object(stdin, 'fileno')
@mock.patch.object(stdin, 'read')
def test_your_behavior(self, mock_read, mock_fileno):
# this should make select.select return what you expect it to return
mock_fileno.return_value = 'your expected value'

# rest of the test goes here...

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]