2009-05-21 20 views
11

Tengo el código VBScript que inicia QuickTest Professional, ejecuta una serie de pruebas QTP y envía los resultados por correo electrónico. Esto funciona bien, pero preferiría usar un lenguaje con mejor soporte de herramientas (un buen IDE, por ejemplo). Actualmente estoy llamando a las bibliotecas .Net desde el script de inicio, por lo que me preguntaba si era posible usar un lenguaje como C# para realizar la misma tarea. Si es así, ¿hay algún buen recurso que solucione esto? Pude encontrar muy poco sobre este tema a través de Google y no parece haber otras preguntas sobre SO sobre este tema.¿Puedo utilizar un lenguaje que no sea VBScript para ejecutar pruebas QTP mediante programación?

Para mayor claridad, he incluido el código para la rutina que hace la mayor parte del trabajo. Esto no incluye las declaraciones .Net, pero failedTestsList y allTestsList son instancias de System.ArrayList.

EDIT: Todos los ejemplos de documentación QTP usan VBScript, pero como puede ver, el código solo crea los objetos QTP. Asumiría que podrían llamarse desde otro idioma que admite la creación de estos objetos. Parece por mis fallas de Google que nadie lo está haciendo.

Sub ExecuteQTPTest(name) 
    Dim App, resultsPath 
    Dim testPath, testResults 
    testPath = name 
    allTestsList.Add(name) 
    Set App = CreateObject("QuickTest.Application") 

    App.Launch 
    App.Visible = False 
    App.Open testPath 

    SetQTPTestOptions(App) 
    SetQTPRunOptions(App) 
    SetQTPWebOptions(App) 

    App.Folders.RemoveAll 

    Dim qtpTest, qtpResultsOpt 
    Set qtpTest = App.Test 
    Set qtpResultsOpt = CreateObject("QuickTest.RunResultsOptions") 

    resultsPath = testPath & "\RES1" 

    qtpResultsOpt.ResultsLocation = resultsPath 

    qtpTest.Run qtpResultsOpt ''// Run the test 

    testResults = "Test Status: " & qtpTest.LastRunResults.Status & vbCrLf & _ 
      "Last Error: " & qtpTest.LastRunResults.LastError & vbCrLf & _ 
      "Detailed Results located at " & qtpTest.LastRunResults.Path & _ 
       " can be viewed with the QTP Results Viewer Tool " & vbCrLf 

    If qtpTest.LastRunResults.Status <> "Passed" Then 
     g_testRunPassed = False 
     failureCount = failureCount + 1 
     failedTestsList.Add(name) 
     LogResults testResults, name   
    End If 

    qtpTest.Close 

    Set qtpResultsOpt = Nothing 
    Set qtpTest = Nothing 

    App.Quit 

    Set App = Nothing 
End Sub 

Respuesta

13

Disculpas, pero no tengo tiempo para convertir la muestra completa en C#. He reunido una demostración simple que debería ponerlo en marcha. Esto sólo utiliza C# para abrir una instancia de QTP:

using System; 
using QTObjectModelLib; 

namespace QtpDemo 
{ 
    class QtpDriver 
    { 
     [STAThread] 
     static void Main(string[] args) 
     { 
      Application app = new Application(); 
      app.Launch(); 
      app.Visible = true; 
     } 
    } 
} 

Tendrá que compilarlo ligarse a C: \ Archivos de programa \ Mercury Interactive \ QuickTest Professional \ bin \ QTObjectModelLib.dll (que es la interoperabilidad .NET biblioteca para QTObjectModel.dll) y tienen eso y QTObjectModel.dll en el directorio de su aplicación cuando lo ejecuta.

No debe ser tan difícil desde aquí convertir cualquier declaración de objeto y llamadas de función de VBScript a C#. Por favor, pregunte si algo no está claro.

Para su otro punto acerca de las muestras en internet, hay muchas personas haciendo cosas más avanzadas con QTP y QC, pero creo que ninguna solución realmente inteligente es compartida. Yo, por ejemplo, probablemente estaría prohibido compartir tales cosas en mi contrato de trabajo, pero estoy de acuerdo con usted: hay escasez de buenas muestras de QTP API, al menos en Google. Habiendo dicho eso, sinceramente recomiendo el SQA Forums para sus necesidades de QTP y QC.

Rich

+0

Gracias. Creo que este puede ser el empujón en la dirección correcta que estaba buscando. Lo intentaré el martes. – ssakl

+2

Este código funcionó. Sin embargo, para QTP versión 10.0, tuve que cambiar usando QTObjectModelLib; para usar QuickTest ;. También agregué una aplicación. Quit() al final. Este es un gran punto de partida. ¡Gracias! – ssakl

6

SÍ, puede usar cualquier cosa que pueda "hacer" COM, y eso incluye C#. También VB.NET, por supuesto.

y Perl, Python, Javascript y otros.

Sin la ayuda de Google, tendrá que seguir su nariz, sobre cómo lidiar con la interfaz, pero no es tan difícil cuando tiene el ejemplo existente. Además, su proveedor, idealmente, habrá documentado la interfaz COM para usted.

0

si esto sigue siendo importante para usted ... QTP 11 que permite programar en C#

+2

eso no es verdad. todas las versiones de qtp solo permiten escribir código en VBScript. no hay soporte para ningún otro idioma. si quería decir que se puede usar la interfaz COM de QTP, que es externa a QTP, entonces es verdadera. –

Cuestiones relacionadas