2012-06-11 14 views
7

Ostatnio pracuję nad selenem webdriver 2.0 (rozwój architektury automatyzacji). Zgodnie z wymaganiami dla każdego faiulre, zrzut ekranu musi być przechwytywany (ścieżka pliku i nazwa pliku: ./screenshots/testcases/ddmmyyyy/scenario_hhmmss.png), ale już przechwyciłem zrzuty ekranu. kiedy uruchamiam cały zestaw testów (chcę wygenerować raport JUNIT taki, że repost musi mieć łącze do zrzutów ekranu.) Teraz problem polega na tym, że ścieżka do ekranu jest generowana dynamicznie (według kodu selenu java), aw raporcie Junit chcę ustanowić hiperlink do ostatnio wygenerowanych zrzutów ekranu (czy już zaktualizowałem plik frames-report.xslt, ponieważ możemy utworzyć link, ale został on zakodowany na stałe)? Sugerujesz jakikolwiek sposób to zrobić?Jak przekazać parametr do skryptów ant?

Oto niektóre części mojego pliku 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> 

Odpowiedz

15

Korzystanie Java system własności

Możesz przekazać zmienną jako argument JVM. Zakładając, że zmienna o nazwie „screenShotRoot” definiuje się ten

ant -DscreenShotRoot=/screenshots/testcases 

można go odczytać w build.xml jak ten

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

swojego zadania ANT można następnie wykorzystać tę drogę główną, aby wygenerować odpowiednie ścieżki do plików PNG w oczekiwanym terminie.

Zobacz ten Apache ANT FAQ page

Używanie zmiennych środowiskowych

Można również używać zmiennych środowiskowych systemu operacyjnego, ustawiając je przed wywołaniem skryptu. Zakładając, że zmienna środowiskowa o nazwie "screenShotRoot" zdefiniowano tak na Windows

SET screenShotRoot=/screenshots/testcases 

można go odczytać w build.xml jak ten

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

pomocą właściwości plików

You może również pisać twoje linki do pliku właściwości, który ładuje twój skrypt ANT, tak jak ten

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

Nie potrzeba '' w pierwszym przypadku. 'env' odnosi się do zmiennych środowiskowych. Ale pokazujesz, jak przekazywać wartości za pomocą Java System Property ('-Dkey = value'). Ant może uzyskać dostęp do takich zmiennych bezpośrednio ('$ {screenShotRoot}'). – sudocode

+0

Dzięki, zaktualizowałem swoją odpowiedź z Twoimi komentarzami, aby zapewnić 3 oddzielne opcje – Brad

+0

dziękuję, został rozwiązany .. –

1

Zgodnie z dokumentacją urządzenia JUnitReport task, można przekazać parametry XSL za pomocą zagnieżdżonej etykiety param na elemencie report.

Od wersji Ant 1.7 tag raportu obsługuje zagnieżdżone znaczniki param. Znaczniki te mogą przekazać parametry XSL do arkusza stylów.

Więc można przekazać wartości parametru do arkusza stylów coś takiego:

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

Nie było jasne od Twojego pytania. Myślę, że powiedziałeś, że już wsparłeś parametr w twoim arkuszu stylów XSL.Tak czy inaczej, oto podsumowanie tego, jak można go używać:

<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

cześć, moje zapytanie jest, zamierzam wykonać wiele przypadków testowych w ramach jednego zestawu testów, w tym przypadku myślę trudno jest zdefiniować właściwość dla każdego linku.i myślę, że twoje podejście będzie dobrze dla pojedynczego przypadku testowego. –

Powiązane problemy