使用输入文件和输出解决方案进行测试的脚本

时间:2009-06-13 21:32:02

标签: testing scripting

我有一组* .in文件和一组带有匹配文件名的* .soln文件。我想用* .in文件作为输入运行我的程序,并将输出与* .soln文件中的输出进行比较。最好的方法是什么?我可以想到3个选项。

  1. 用Java编写一些驱动程序列出文件夹中的文件,运行程序并进行比较。这将是艰难而艰难的。
  2. 编写一个bash脚本来执行此操作。怎么样?
  3. 编写一个python脚本来执行此操作?

3 个答案:

答案 0 :(得分:0)

如果程序存在,我怀疑bash脚本是最好的选择。 如果您的soln文件命名正确,那么某种循环就像

用于base * .soln中的文件 做   myprogram> new_ $文件   diff $ file new_ $ file 完成

当然,您可以查看diff和的退出代码 做各种其他事情来创建测试报告。 。

对我来说这看起来最简单。 。

卡尔

答案 1 :(得分:0)

这主要是一个需要使用具有最小逻辑的文件系统的问题。对于这些问题,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

未测试。

答案 2 :(得分:0)

我会选择bash解决方案。另外,假设你正在做的是测试,我总是保存myprogram的输出,这样如果有失败,你总是有输出来比较它。

#!/bin/bash

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

根据报告的要求添加检查或退出状态等。