2016-11-25 9 views
2

cppコードをPythonでテストしたいと思います。cppとpythonのプログラム結果を比較する

私はcomplilation後に取得し、次のコードとa.exeファイル、持っている:

int main() { 
    std::istream& input_stream = std::cin; 
    std::ostream& output_stream = std::cout; 
    Data input_data = ReadData(input_stream); 
    Data output_data = DoSomethingWithData(input_data); 
    OutputData(output_data, output_stream); 
    return 0; 
} 

を私はpyコードを持っている:

input_data = '' 
for line in sys.stdin: 
    input_data += line 
output_data = do_something_with_data(input_data) 
print(output_data) 

私はpyスクリプト、等しく与えることができますしたいと思いますcpp programmに、py programmに入力し、出力を比較してください。それを行う簡単な方法はありますか?

答えて

0

あなたはsubprocesshttps://docs.python.org/2/library/subprocess.html)を使用することができます。

input_data = "some-data" 
cpp_output = subprocess.check_output(["a.exe", input_data]) 
python_output = subprocess.check_output(["python", "test.py", input_data]) 
assert cpp_output == python_output 
+2

'assert'はその違いを理解するのに役立ちませんでした。この場合、[difflib](https://docs.python.org/2/library/difflib.html)モジュールが便利です。 –

0

Windowsを使用しているように見えます。両方のプログラムの出力をファイルにリダイレクトしてファイルを比較します。 cmd.exeで:

a.exe > a_output.txt 
your_python_script.py > py_output.txt 
FC a_output.txt py_output.txt 

出力をテキストにリダイレクトするには、 ">"を使用できます。コマンドFC(File Compare)は、ファイル間の違いをチェックします。

関連する問題