2012-06-11 33 views
7

最近我正在研究selenium webdriver 2.0(开发自动化框架)。按照每个faiulre的要求,屏幕截图必须被捕获(文件路径和文件名:./screenshots/testcases/ddmmyyyy/scenario_hhmmss.png),但是我已经截取了屏幕截图。当我运行这些整个测试套件时(我想生成JUNIT报告,使得转贴必须有截图链接。)现在问题是截图路径是动态生成的(通过selenium java代码),并且在Junit报告中我想建立超链接到最近生成的截图(我已经更新frames-report.xslt文件使用我们可以创建链接,但它被硬编码)?请建议任何方式来这样做?如何将参数传递给ant脚本?

这里是我的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> 

回答

15

的某些部分使用Java系统属性

您可以传递一个变量作为JVM参数。假设你已经像这样定义

ant -DscreenShotRoot=/screenshots/testcases 

一个名为“screenShotRoot”变量,你可以这样

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

你的Ant任务在你的build.xml读它,然后可以使用此根路径,生成适当的路径在预计的日期发送到您的PNG文件。

看到这个Apache ANT FAQ page

使用环境变量

您也可以使用操作系统环境变量,通过调用你的脚本之前设置它们。假定您已经定义了一个名为“screenShotRoot”环境变量像这样在Windows

SET screenShotRoot=/screenshots/testcases 

你可以这样

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

在你的build.xml读它使用属性文件

你也可以将您的链接写入您的ANT脚本加载的属性文件中,如下所示:

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

在你的第一种情况下不需要'''。当你使用环境变量时,'env'是为了。但是您展示了如何使用Java系统属性('-Dkey = value')传递值。 Ant可以直接访问这些变量('$ {screenShotRoot}')。 – sudocode

+0

谢谢,我已经更新了我的回答与您的意见提供3个单独的选项 – Brad

+0

谢谢,它已被解决.. –

1

根据JUnitReport task的文档,您可以使用report元素上嵌套的param标签来传递XSL参数表。

由于Ant 1.7报表标签支持嵌套参数标签。这些标签可以 将XSL参数传递给样式表。

所以,你可以在参数值传递给样式表是这样的:

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

我是不是从你的问题不清楚。我想你说你已经支持你的XSL样式表中的参数。无论如何,这里是你如何使用它的总结:

<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

嗨,我的查询是,我要在一个测试套件内执行多个测试用例,在这种情况下,我认为很难为每个链接定义属性。我认为你的方法对单个测试用例来说可以。 –