2012-06-11 24 views
7

हाल ही में मैं सेलेनियम वेबड्राइवर 2.0 (ऑटोमेशन फ्रेमवर्क विकसित करना) पर काम कर रहा हूं। प्रत्येक faiulre के लिए आवश्यकता के अनुसार स्क्रीनशॉट कैप्चर किया जाना चाहिए (फ़ाइल पथ और फ़ाइल नाम: ./screenshots/testcases/ddmmyyyy/scenario_hhmmss.png) हालांकि मैं पहले से ही स्क्रीनशॉट को कैप्चर करता हूं। जब मैं इन पूरे टेस्ट सूट को चलाता हूं (मैं जूनिट रिपोर्ट उत्पन्न करना चाहता हूं जैसे कि रिपोस्ट में स्क्रीनशॉट लिंक होना चाहिए।) अब समस्या यह है कि स्क्रीनशॉट पथ गतिशील रूप से उत्पन्न होता है (सेलेनियम जावा कोड द्वारा), और जूनिट रिपोर्ट में मैं हाइपरलिंक स्थापित करना चाहता हूं हाल ही में जेनरेट किए गए स्क्रीनशॉट (मैं पहले ही फ्रेम बना सकता हूं, हम लिंक बना सकते हैं लेकिन यह हार्डकोड किया गया था)? कृपया ऐसा करने का कोई तरीका सुझाएं?चींटी स्क्रिप्ट्स में पैरामीटर कैसे पास करें?

यहाँ मेरी 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

का कुछ हिस्सा जावा सिस्टम संपत्ति

का उपयोग करते हुए आप एक JVM तर्क के रूप में एक चर पारित कर सकते हैं है। आप "screenShotRoot" नामक एक चर इस

ant -DscreenShotRoot=/screenshots/testcases 

तरह परिभाषित किया है मान लें तो आप इस

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

आपका चींटी कार्य की तरह अपने build.xml में यह पढ़ सकते हैं तो इस रूट पथ का उपयोग उचित पथ उत्पन्न करने के लिए कर सकते हैं अपेक्षित तारीख पर आपकी पीएनजी फाइलों के लिए।

इस Apache ANT FAQ page

पर्यावरण चर

का उपयोग करते हुए आप यह भी ऑपरेटिंग सिस्टम वातावरण चरों का उपयोग कर सकते हैं उन्हें अपनी स्क्रिप्ट कॉल करने से पहले की स्थापना करके, देखें। आप एक वातावरण चर "screenShotRoot" नाम विंडोज

पर इस तरह परिभाषित किया है मान लें
SET screenShotRoot=/screenshots/testcases 

आप इस

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

की तरह अपने build.xml में यह पढ़ सकते हैं गुण फ़ाइलें

आप का उपयोग करना यह आपके गुणों को एक प्रॉपर्टी फ़ाइल में भी लिख सकता है जो आपकी एएनटी स्क्रिप्ट लोड करता है, जैसे

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

आपके पहले मामले में '' की आवश्यकता नहीं है। जब आप पर्यावरण चर का उपयोग करते हैं तो 'env' है। लेकिन आप जावा सिस्टम प्रॉपर्टी ('-Dkey = value') का उपयोग करके मानों को पारित करने के तरीके दिखा रहे हैं। चींटी सीधे ऐसे चरों तक पहुंच सकती है ('$ {screenShotRoot}')। – sudocode

+0

धन्यवाद, मैंने 3 अलग-अलग विकल्प – Brad

+0

धन्यवाद प्रदान करने के लिए अपनी टिप्पणियों के साथ अपना उत्तर अपडेट किया है, यह हल हो गया है .. –

1

JUnitReport task के प्रलेखन के अनुसार, आप report तत्व पर एक नेस्टेड param टैग का उपयोग कर एक्सएसएल पैरामीटरेटर्स पास कर सकते हैं।

चूंकि चींटी 1.7 रिपोर्ट टैग नेस्टेड परम टैग का समर्थन करता है। ये टैग स्टाइलशीट में एक्सएसएल पैरामीटर पास कर सकते हैं।

तो तुम इस तरह स्टाइलशीट कुछ करने के लिए पैरामीटर मान दे सकते हैं:

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

मैं अपने प्रश्न से स्पष्ट नहीं था। मुझे लगता है कि आपने कहा है कि आपने पहले से ही अपने एक्सएसएल स्टाइलशीट में पैरामीटर का समर्थन किया है।वैसे भी, यहां सारांश का सारांश दिया गया है कि आप इसका उपयोग कैसे कर सकते हैं:

<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

हाय, मेरी क्वेरी है, मैं एक टेस्ट सूट के भीतर कई परीक्षण मामलों को निष्पादित करने जा रहा हूं, उस मामले में मुझे लगता है प्रत्येक लिंक के लिए संपत्ति को परिभाषित करना मुश्किल है। मुझे लगता है कि आपका दृष्टिकोण एकल परीक्षण मामले के लिए ठीक होगा। –

संबंधित मुद्दे