2016-12-04 81 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)" 

一兩件事:請記住,這個代碼是對新行敏感,所以如果測試結果不以新行結束和預期的結果呢,劇本將指出差異。