2012-06-07 59 views
0

我正在使用命令行運行soapui測試。現在它看起來是這樣的:soapui- testrunner.sh - 只接受一個.xml文件作爲輸入?

/bin/testrunner.sh -j -a -f 「輸出」 -R 「Project_Report」 -F 「HTML」 /path_to_xml_file/sample.xml

我想這運行/ path_to_xml_file /下的所有.xml文件。喜歡的東西

/bin/testrunner.sh -j -a -f 「輸出」 -R 「Project_Report」 -F 「HTML」 /path_to_xml_file/*.xml

但它不工作。我不想將所有測試分組到一個.xml文件中。

我嘗試使用for循環,如下所示: for ls *.xml;做 /bin/testrunner.sh -j -a -f 「輸出」 -R 「Project_Report」 -F 「HTML」/ path_to_xml_file/$文件 做

但還有另一個問題。在.html文件中只能看到最後一個.xml文件的測試結果。它覆蓋了以前的所有測試結果。

有人可以幫助我嗎? 謝謝!

+0

在linux上是否有-f標誌?我使用Windows,並有一個標誌:-f(設置輸出文件夾以將結果導出到)。如果你有,你可以使用一個目錄名稱中有文件名(或時間戳)來分隔html文件 – chrismead

+0

@chrismead:嗨,我的例子顯示-f選項(-f「輸出」)。在這個文件夾下,soapui使用.xml文件名創建文件夾,並將所有.html文件放在它下面。但是每個文件名都是不同的,它很難概括代碼來選擇它下面的所有文件夾和.html文件 – user1164061

回答

1

Doh!我第一次沒有看到你的-f標誌。

我不確定我有更多的東西可以提供,但甚至要分享這個,我需要添加它作爲答案(因此它是可讀的)。

這是我用來運行testRunner批處理文件的批處理文件。我知道你沒有使用Windows,但我猜想至少有一些這些東西在Linux上更簡潔和容易。基本思路是:

  • 從上次運行
  • 清理創造的結果
  • 運行測試
  • 轉儲運行輸出到文件
  • grep的時間戳命名的目錄( findstr)輸出查找錯誤
  • 將所有輸出複製到指定文件夾的時間戳

如果你在linux中使用了這些命令,你應該能夠確保你的所有HTML文件都被捕獲了。如果你需要將所有的HTML文件收集到一個列表中,我想你可以再次grep來獲得這個列表。

對不起,我沒有Linux的例子。

@ECHO OFF 
call "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 
set hour=%time:~0,2% 
if "%hour:~0,1%"==" " set hour=0%time:~1,1% 
set timeClean=%hour%_%time:~3,2%_%time:~6,2% 
set mydate=%date:~4,2%%date:~7,2%%date:~10,4% 
set timestamp=%mydate%_%timeClean% 
set newDir=TestResults\%timestamp% 
set projFileName=%1 
set testSuite=%2 
set baseDir=%3 
echo BASE DIRECTORY = %baseDir% 
SETLOCAL ENABLEEXTENSIONS 
setlocal enabledelayedexpansion 
del /F /S /Q %baseDir%soapui*.log 
del /F /S /Q %baseDir%global-groovy*.log 
del /F /S /Q %baseDir%soapui*.log.* 
set file=%baseDir%\%projFileName% 
set newFolder=%baseDir%Results_%timestamp% 
echo %newFolder% 
mkdir %newFolder% 
set newSummaryFile=%newFolder%\testSummary.txt 
echo Executing test %projFileName% 
call testrunner.bat -s%testSuite% -r -j -I -S -f%newFolder% %projFileName% > %newFolder%\summary.txt 2>&1 
@ping 127.0.0.1 -n 5 -w 1000 > nul 
set "content=Failed tests (if any) line numbers:" 
for /f "tokens=1,8*" %%i in ('findstr /I /N /C:"ASSERTION FAILED" /C:" ERROR" %newFolder%\summary.txt') do call :addLines Line %%i %%j 
goto :end 
:addLines 
for /f "tokens=1 delims=::" %%z in ("%2") do set "linenum=%%z" 
set "content=%content% %1 %linenum%" 
GOTO :eof 
:end 
echo %content% > %newSummaryFile% 
xcopy /F *.log %newFolder%