WSH 実行結果を知りたい場合には、WSH スクリプトで WSH テストの現在の作業ディレクトリに output.xml というファイルを生成する必要があります。 このディレクトリに含まれるすべてのファイルはデータベースに格納されるので、テスト実行のファイル一覧からダウンロードできます。 プロジェクト 領域の [結果で無視するファイル拡張子] プロパティに拡張子が定義されている場合、ファイルは格納対象外になります。
スクリプトが 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 要素には、ゼロまたは正の数が含まれている必要があります。 最上位の ResultElement の ErrorCount と WarningCount を元に成功条件を評価し、その結果によってテストの合否が判定されます。 XML ファイルには Silk Central GUI に表示されない要素が含まれている可能性があります。 ただし、出力された output.xml ファイルはデータベースに格納されており、実行されたテストのファイル一覧に含まれているため、見ることが可能です。
Incident 要素は WSH テストの実行時に発生したイベントを表します。 Message と Severity は Silk Central GUI のテスト実行のメッセージ一覧に表示されます。 Incident 要素には Message と Severity の要素が 1 つずつ含まれます。
Severity 要素は以下の値のいずれかを持ちます。
結果ファイルには追加情報を格納できます。 ResultElement には、任意の数のサブ ResultElement を含めることができるので、情報を簡単にグループ化できます。 サブ ResultElement を作成すると、結果ファイルが読みやすくなります。 ユニット テスト(JUnit、NUnit)に関して互換性を保つため、ResultElement には TestSuite または Test という名前を付けることができます。
ResultElement には、以下の追加要素を含めることができます。
Incident 要素には Detail 要素のリストが含まれることがあります。
Detail 要素は Incident に関する詳細情報を表します。 この要素では、TestName と Info の要素を定義する必要があります。 TestName は、どこで Incident が発生したかの詳細情報を示すのに使用します。 Info 要素は Incident についての詳細情報を持ちます(スタック トレースなど)。
<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>
以下のスクリプトは、結果ファイルのサンプルを生成するために使用したものです。 このスクリプトを動かしてみるには、.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 スクリプトもサンプル結果ファイルを生成し、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>")