2012-06-11 35 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

嗨,我的查詢是,我要在一個測試套件內執行多個測試用例,在這種情況下,我認爲很難爲每個鏈接定義屬性。我認爲你的方法對單個測試用例來說可以。 –