簡體   English   中英

用於測試輸入文件和輸出解決方案的腳本

[英]Script for Testing with Input files and Output Solutions

我有一組* .in文件和一組* .soln文件,它們具有匹配的文件名。 我想以* .in文件作為輸入來運行我的程序,並將輸出與* .soln文件中的輸出進行比較。 最好的方法是什么? 我可以想到3個選擇。

  1. 用Java編寫一些驅動程序以列出文件夾中的文件,運行程序並進行比較。 這將是艱難而艱難的。
  2. 編寫一個bash腳本來做到這一點。 怎么樣?
  3. 寫一個python腳本來做到這一點?

如果程序存在,我懷疑bash腳本是最好的選擇。 如果您的soln文件命名正確,則類似

對於base * .soln中的文件,請執行myprogram> new_ $ file diff $ file new_ $ file完成

當然,您可以檢查diff的退出代碼並執行其他各種操作來創建測試報告。

在我看來,這最簡單。

卡爾

這主要是一個問題,需要使用最少邏輯的文件系統。 對於此類問題,Bash並不是一個不錯的選擇。 如果事實證明,您想要做的事情不僅僅只是比較是否相等,Python就會成為更有吸引力的選擇。 對於這樣的一次性腳本,Java似乎不是一個不錯的選擇。

基本的bash實現可能看起來像這樣:

cd dir_with_files

program=your_program
input_ext=".in"
compare_to_ext=".soIn"

for file in *$from_extension; do 
  diff <("$program" "$i") "${file:0:$((${#file}-3))}$compare_to_ext"
done

未經測試。

我會尋求一個bash解決方案。 還要考慮到您正在做的是測試,所以我將始終保存myprogram的輸出,以便在出現故障時始終可以將其與之進行比較。

#!/bin/bash

for infile in *.in; do
    basename=${infile%.*}
    myprogram $infile > $basename.output
    diff $basename.output $basename.soln
done

根據報告的要求添加檢查或退出狀態等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM