10

私は2つの半分で構成されたソフトウェアを持っています.1つは最初のPCで実行されているpythonであり、もう1つは2番目のPCで実行されているcppです。これらは、シリアル ポート (tty) を介して通信します。

私のPCでPython側をテストし、適切なデータを供給して、期待どおりに動作するかどうかを確認したいと思います。

サブプロセスの使用を開始しましたが、問題が発生しました。どの標準入力と標準出力を指定する必要がありますか?

cStringIOないので機能しません。fileno()

PIPE も機能しません。select.select()実際には何も送信されていなくても、読み取るものがあると言うからです。

ヒントはありますか?使用できる偽の tty モジュールはありますか?

4

1 に答える 1

2

理想的には、ターミナル IO にあまり依存せずに、それをモックして動作をテストするだけです。そのためには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...

テストしようとしているコードの少なくとも一部を投稿できれば、より良い例を挙げられるかもしれません。

于 2013-11-14T00:13:45.090 に答える