Affichage des informations renvoyées par WSH

Pour collecter les résultats d'une exécution WSH, le script WSH doit générer un fichier nommé output.xml dans le répertoire de travail actuel du test WSH. Tous les fichiers qui se trouvent dans ce répertoire sont stockés dans la base de données et sont téléchargeables via la liste des fichiers pour l'exécution du test. Les fichiers ne sont pas stockés lorsque leur extension est définie via la propriété Extensions de fichiers à exclure des résultats dans l'espace Projets.

Remarque : Le répertoire de travail actuel est créé de façon dynamique pour chaque exécution WSH. N'utilisez pas de chemin d'accès absolu au moment de la création du fichier. Tout chemin d'accès relatif utilisé renverra correctement au répertoire de travail actuel.

Toute information qu'un script écrit dans la sortie WSH standard est consignée dans le fichier texte log.txt qui se trouve dans le répertoire de travail actuel. Ce fichier est stocké dans la base de données et est consultable dès lors qu'il est inclus dans la liste des fichiers de l'exécution du test.

L'exemple suivant illustre la procédure d'impression des informations consignées à partir d'un script :

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

La structure XML de output.xml commence par l'élément ResultElement qui définit un attribut nommé TestItem, qui indique le nom de l'élément ResultElement.

L'élément ResultElement doit contenir un élément nommé ErrorCount, un élément nommé WarningCount (en option) et une liste d'éléments Incident.

Les éléments ErrorCount et WarningCount doivent contenir un nombre positif ou zéro. Les éléments ErrorCount et WarningCount de l'élément ResultElement de niveau supérieur servent à évaluer les critères de succès, qui déterminent si un test est concluant ou non. Le fichier XML peut contenir des éléments supplémentaires qui ne sont pas visibles dans l'interface utilisateur de Silk Central. Le fichier output.xml est toutefois stocké dans la base de données et est consultable dès lors qu'il est inclus dans la liste des fichiers du test exécuté.

L'élément Incident représente un événement qui s'est produit au moment de l'exécution du test WSH. Message et Severity apparaissent dans la liste de messages des exécutions de tests de l'interface utilisateur de Silk Central. Un élément Incident doit contenir des éléments Message et Severity.

L'élément Severity doit présenter l'une des valeurs suivantes :

Vous pouvez stocker des informations supplémentaires dans le fichier de résultat. L'élément ResultElement peut contenir un nombre quelconque de sous-éléments ResultElements. Ainsi, le regroupement des informations ne représente aucune difficulté. Grâce à ces sous-éléments, la lecture du fichier de résultat est plus simple. Pour des raisons de compatibilité avec les tests d'unité, JUnit et NUnit, l'élément ResultElement peut être nommé TestSuite ou Test.

L'élément ResultElement peut contenir les éléments supplémentaires suivants :

L'élément Incident peut contenir une liste d'éléments Detail.

L'élément Detail représente des informations détaillées sur un Incident. Il doit définir des éléments TestName et Info. L'élément TestName sert à fournir des informations détaillées sur l'emplacement de l'Incident. L'élément Info contient des informations détaillées sur l'Incident, par exemple, une trace de pile.

Remarque : Jusqu'à Silk Central 8.1, la valeur des éléments Message et Info devait être codée dans une URL (ISO-8859-1). Depuis la version 8.1.1, le codage des URL n'est plus autorisé.

Exemple de fichier de résultat

<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>

Exemple de script Java

Le script suivant a été utilisé pour générer l'exemple de fichier de résultat. Pour essayer ce script, enregistrez-le avec l'extension .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);

Exemple de script Visual Basic

Le script Visual Basic suivant génère également l'exemple de fichier de résultat et l'enregistre sous Output.xml. Pour essayer ce script, enregistrez-le avec l'extension .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>")