0

我正在使用命令行运行soapui 测试。现在它看起来像这样:

/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 file in ls *.xml; 做 /bin/testrunner.sh -j -a -f"output" -R"Project_Report" -F"HTML" /path_to_xml_file/$file 完成

但是还有另一个问题。在 .html 文件中只能看到最后一个 .xml 文件的测试结果。它正在覆盖所有以前的测试结果。

有人可以帮我弄这个吗?谢谢!

4

1 回答 1

1

嗬!我第一次没有看到你的 -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%
于 2012-06-08T20:51:53.697 回答