2012-06-11 12 views
7

Recientemente estoy trabajando en Selenium webdriver 2.0 (desarrollo de marco de automatización). Según el requisito para cada faiulre, la captura de pantalla debe ser capturada (ruta del archivo y nombre del archivo: ./screenshots/testcases/ddmmyyyy/scenario_hhmmss.png), sin embargo, ya capturo capturas de pantalla. cuando ejecuto todo el conjunto de pruebas (quiero generar el informe JUNIT de modo que el repost debe tener un enlace de captura de pantalla). Ahora el problema es que la ruta de captura de pantalla es generada dinámicamente (por código de selenio java) y en el informe Junit quiero establecer un hipervínculo a las capturas de pantalla generadas recientemente (ya he actualizado el archivo frames-report.xslt usando podemos crear un enlace pero está codificado) Por favor sugiere alguna forma de hacerlo?¿Cómo pasar el parámetro a las secuencias de comandos ant?

Aquí es una parte de mi archivo build.xml

<target name="exec" depends="compile"> 
     <delete dir="${report}" /> 
    <mkdir dir="${report}" /> 
     <mkdir dir="${report}/xml" /> 
    <junit printsummary="yes" haltonfailure="no"> 
     <classpath refid="project-classpath" /> 
     <classpath> 
         <pathelement location="${bin}" /> 
         <fileset dir="${lib}"> 
          <include name="**/*.jar" /> 
         </fileset> 
        </classpath> 
     <test name="com.example.tests.NormanTestSuite" haltonfailure="no" todir="${report}/xml" outfile="TEST-result">   
     <formatter type="xml" /> 
     </test>   
    </junit> 
    <junitreport todir="${report}"> 
      <fileset dir="${report}/xml"> 
       <include name="TEST*.xml" /> 
      </fileset> 
    <report styledir="C:\apache-ant-1.8.4\custom" format="frames" todir="${report}/html" >   
    </report> 
    </junitreport> 
</target> 

Respuesta

15

Uso de Java de la propiedad Sistema

Puede pasar una variable como un argumento de JVM. Asumiendo que tiene una variable llamada "screenShotRoot" se define como esto

ant -DscreenShotRoot=/screenshots/testcases 

se puede leer en su build.xml como esto

<property name="screenshot.root" value="${screenShotRoot}" /> 

Su tarea ANT continuación, puede utilizar esta ruta raíz para generar caminos apropiados a sus archivos PNG en la fecha esperada.

ver este Apache ANT FAQ page

Usar variables de entorno

También puede utilizar variables de entorno del sistema operativo, estableciendo su valor antes de llamar a la secuencia de comandos. Asumiendo que tiene una variable de entorno llamada "screenShotRoot" se define como esto en Windows

SET screenShotRoot=/screenshots/testcases 

se puede leer en su build.xml como esto

<property environment="env"/> 
<property name="screenshot.root" value="${env.screenShotRoot}" /> 

Uso de propiedades de archivos

Usted también podría escribir sus enlaces en un archivo de propiedades que cargue su script ANT, como este

<property file="build.properties"/> 
+0

No es necesario '' property environment = "env" /> 'en su primer caso. 'env' es para cuando usa variables de entorno. Pero está mostrando cómo pasar valores usando Java System Property ('-Dkey = value'). Ant puede acceder a tales variables directamente ('$ {screenShotRoot}'). – sudocode

+0

Gracias, he actualizado mi respuesta con sus comentarios para proporcionar 3 opciones separadas – Brad

+0

gracias, se ha resuelto ... –

1

De acuerdo con la documentación del JUnitReport task, puede pasar los parámetros de XSL usando una etiqueta anidada param en el elemento report.

Dado que Ant 1.7 la etiqueta de informe admite las etiquetas param anidadas. Estas etiquetas pueden pasar los parámetros XSL a la hoja de estilo.

por lo que podría pasar el valor del parámetro a la hoja de estilos algo como esto:

<report styledir="C:\apache-ant-1.8.4\custom" format="frames" todir="${report}/html" >   
    <param name="screenshots_link" expression="${screenshots.link}"/> 
</report> 

no era claro por su pregunta. Creo que dijiste que ya has respaldado el parámetro en tu hoja de estilos XSL.De todos modos, aquí hay un resumen de cómo puede usarlo:

<xsl:stylesheet> 

    <!-- declare the parameter you will pass. Could also define a default value --> 
    <xsl:param name="screenshot_link"/> 


    <xsl:template> 

     <!-- use the parameter value --> 
     <xsl:value-of select="$screenshot_link"/> 
+0

hola, mi pregunta es, voy a ejecutar varios casos de prueba dentro de un conjunto de pruebas, en ese caso, creo es difícil definir la propiedad para cada uno de los enlaces. Creo que su enfoque será suficiente para un solo caso de prueba. –

Cuestiones relacionadas