WSH から返される情報の表示

WSH 実行結果を知りたい場合には、WSH スクリプトで WSH テストの現在の作業ディレクトリに output.xml というファイルを生成する必要があります。 このディレクトリに含まれるすべてのファイルはデータベースに格納されるので、テスト実行のファイル一覧からダウンロードできます。 プロジェクト 領域の [結果で無視するファイル拡張子] プロパティに拡張子が定義されている場合、ファイルは格納対象外になります。

注: 現在の作業ディレクトリは、WSH を実行するたびに動的に作成されます。 ファイルを作成するときに絶対パスは使わないでください。 相対パスを使うと、現在の作業ディレクトリを正しく指すようになります。

スクリプトが WSH 標準出力に書き出した情報はすべて、現在の作業ディレクトリにある log.txt というテキスト ファイルに入れられます。 このファイルはデータベースに格納され、テスト実行のファイル一覧に含められるので、そこから表示することができます。

以下の例は、スクリプトからのログ情報を出力する方法を示しています。

 WScript.Echo "This info will be written to the log.txt file"

output.xml の XML 構造は ResultElement という名前の要素から始まります。この要素には TestItem という名前の属性が定義されており、そこで ResultElement の名前を指定します。

ResultElement には、ErrorCount という要素(必須)、WarningCount という要素(省略可能)、および Incident 要素のリストが含まれています。

ErrorCount 要素および WarningCount 要素には、ゼロまたは正の数が含まれている必要があります。 最上位の ResultElementErrorCountWarningCount を元に成功条件を評価し、その結果によってテストの合否が判定されます。 XML ファイルには Silk Central GUI に表示されない要素が含まれている可能性があります。 ただし、出力された output.xml ファイルはデータベースに格納されており、実行されたテストのファイル一覧に含まれているため、見ることが可能です。

Incident 要素は WSH テストの実行時に発生したイベントを表します。 MessageSeveritySilk Central GUI のテスト実行のメッセージ一覧に表示されます。 Incident 要素には MessageSeverity の要素が 1 つずつ含まれます。

Severity 要素は以下の値のいずれかを持ちます。

結果ファイルには追加情報を格納できます。 ResultElement には、任意の数のサブ ResultElement を含めることができるので、情報を簡単にグループ化できます。 サブ ResultElement を作成すると、結果ファイルが読みやすくなります。 ユニット テスト(JUnit、NUnit)に関して互換性を保つため、ResultElement には TestSuite または Test という名前を付けることができます。

ResultElement には、以下の追加要素を含めることができます。

Incident 要素には Detail 要素のリストが含まれることがあります。

Detail 要素は Incident に関する詳細情報を表します。 この要素では、TestNameInfo の要素を定義する必要があります。 TestName は、どこで Incident が発生したかの詳細情報を示すのに使用します。 Info 要素は Incident についての詳細情報を持ちます(スタック トレースなど)。

注: Silk Central 8.1 までは、MessageInfo 要素の値は URL エンコード (ISO-8859-1) されている必要がありました。 バージョン 8.1.1 以降では、URL エンコードは許可されていません。

結果ファイルのサンプル

<ResultElement TestItem="WshOutputTest">
  <ErrorCount>1</ErrorCount> 
  <WarningCount>1</WarningCount>
  <Incident>
    <Message>some unexpected result</Message>
    <Severity>Error</Severity>
    <Detail>
      <TestName>function main()</TestName>
      <Info>some additional info; eg. stacktrace</Info>
    </Detail>
  </Incident>
  <Incident>
    <Message>some warning message</Message>
    <Severity>Warning</Severity>
    <Detail>
      <TestName>function main()</TestName>
      <Info>some additional info; eg. stacktrace</Info>
    </Detail>
  </Incident>
</ResultElement>

Java Script のサンプル

以下のスクリプトは、結果ファイルのサンプルを生成するために使用したものです。 このスクリプトを動かしてみるには、.js という拡張子を付けて保存してください。

function dumpOutput(dumpFile)
{
  dumpFile.WriteLine("<ResultElement TestItem=\"WshOutputTest\">");
  dumpFile.WriteLine("  <ErrorCount>1</ErrorCount>");
  dumpFile.WriteLine("  <WarningCount>1</WarningCount>");
	dumpFile.WriteLine("  <Incident>");
	dumpFile.WriteLine("    <Message>some unexpected result</Message>");
	dumpFile.WriteLine("    <Severity>Error</Severity>");
	dumpFile.WriteLine("    <Detail>");
	dumpFile.WriteLine("      <TestName>function main()</TestName>");
	dumpFile.WriteLine("      <Info>some additional info; eg. stacktrace</Info>");
	dumpFile.WriteLine("    </Detail>");
	dumpFile.WriteLine("  </Incident>");
	dumpFile.WriteLine("  <Incident>");
	dumpFile.WriteLine("    <Message>some warning message</Message>");
	dumpFile.WriteLine("    <Severity>Warning</Severity>");
	dumpFile.WriteLine("    <Detail>");
	dumpFile.WriteLine("      <TestName>function main()</TestName>");
	dumpFile.WriteLine("      <Info>some additional info; eg. stacktrace</Info>");
	dumpFile.WriteLine("    </Detail>");
	dumpFile.WriteLine("  </Incident>");
  dumpFile.WriteLine("</ResultElement>");
}

function main()
{
  var outFile;
  var fso;
  fso = WScript.CreateObject("Scripting.FileSystemObject");
  outFile = fso.CreateTextFile("output.xml", true, true); 
  outFile.WriteLine("<?xml version=\"1.0\" encoding=\"UTF-16\"?>");
  
  dumpOutput(outFile);
  outFile.Close();
  WScript.Echo("Test is completed");	
}

main();
WScript.Quit(0);

Visual Basic Script のサンプル

以下の Visual Basic スクリプトもサンプル結果ファイルを生成し、Output.xml として保存します。 このスクリプトを動かしてみるには、.vbs という拡張子を付けて保存してください。

WScript.Echo "starting"

Dim outFile
Dim errCnt
Dim warningCnt

outFile = "output.xml"
errCnt = 1 ' retrieve that from your test results
warningCnt = 1 ' retrieve that from your test results

Set FSO = CreateObject("Scripting.FileSystemObject")
Set oTX = FSO.OpenTextFile(outFile, 2, True, -1) ' args: file, 8=append/2=overwrite, create, ASCII

oTX.WriteLine("<?xml version=""1.0"" encoding=""UTF-16""?>") 
oTX.WriteLine("<ResultElement TestItem=""PerlTest"">")
oTX.WriteLine("  <ErrorCount>" & errCnt & "</ErrorCount>")
oTX.WriteLine("  <WarningCount>" & warningCnt & "</WarningCount>")
oTX.WriteLine("  <Incident>")
oTX.WriteLine("    <Message>some unexpected result</Message>")
oTX.WriteLine("    <Severity>Error</Severity>")
oTX.WriteLine("    <Detail>")
oTX.WriteLine("      <TestName>function main()</TestName>")
oTX.WriteLine("      <Info>some additional info; eg. stacktrace</Info>")
oTX.WriteLine("    </Detail>")
oTX.WriteLine("  </Incident>")
oTX.WriteLine("  <Incident>")
oTX.WriteLine("    <Message>some warning message</Message>")
oTX.WriteLine("    <Severity>Warning</Severity>")
oTX.WriteLine("    <Detail>")
oTX.WriteLine("      <TestName>function main()</TestName>")
oTX.WriteLine("      <Info>some additional info; eg. stacktrace</Info>")
oTX.WriteLine("    </Detail>")
oTX.WriteLine("  </Incident>")
oTX.WriteLine("</ResultElement>")