繁体   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