2016-12-04 97 views
0

基本上我想要做的就是编写一个shellscript,它将运行一系列测试,接受任何输入(如果有的话)并将测试结果与输出进行比较。比较结果,shell中测试的输入和输出

所以我的文件看起来像这样。

#!/bin/sh 

# Let's set our working directory 
DIR="./tests" 

# And create some variables 
passed=0 
failed=0 
totalamount=0 
returned=0 

# Inform the user about start of testing 
echo "========= TESTING INITIALIZED =========" 

# Actual testing I'm trying to do 

所以我想我应该做的第一件事是创建一个循环,将通过测试运行

for file in "./tests/1/*.test do 

所以现在我不确定我怎么能比我的。测试文件的输出与一个准备好的输出程序。

例如,我有一个程序test1.test,计算2 + 3。结果是5.我想要的是有这个值存储和比较它与我test1.output

任何想法如何做到这一点?

最终我只是比较两个值

if [ $returned -eq $expected ]; then 
    echo "Test was succesful" 
else 
    echo "Test was unsuccesful" 
fi 

基本上最终的结果应该是这个样子:

Test: test1.test 
    Expected result: X 
    Your result: Y 
    Test was succesful/unsuccesful 

回答

1

你可以使用diff的测试结果与输出比较预期。如果他们匹配,那么你可以假设测试是成功的。例如:

test1check="$(diff /folder/test1 /folder/test1-expected)" 
if [ -z "$test1check" ]; then 
    echo "Test was succesful" 
else 
    echo "Test was unsuccesful, difference on results: $test1check" 
fi 

如果用户要进行输入,或者在您自己决定其他情况下,你可以运行相同的比较,但忽略大小写(例如:“苹果”将匹配“苹果”),通过改变第一行是这样的:

test1check="$(diff -i /folder/test1 /folder/test1-expected)" 

一两件事:请记住,这个代码是对新行敏感,所以如果测试结果不以新行结束和预期的结果呢,剧本将指出差异。