2012-06-11 25 views
7

Gần đây tôi đang làm việc trên selenium webdriver 2.0 (phát triển khung tự động hóa). Theo yêu cầu cho mỗi faiulre ảnh chụp màn hình phải được chụp (đường dẫn tập tin và tên tập tin: ./screenshots/testcases/ddmmyyyy/scenario_hhmmss.png) tuy nhiên tôi đã chụp ảnh chụp màn hình. khi tôi chạy toàn bộ bộ kiểm thử này (tôi muốn tạo báo cáo JUNIT sao cho repost phải có liên kết ảnh chụp màn hình.) Bây giờ vấn đề là đường dẫn chụp màn hình được tạo động (bằng mã selenium java), và trong báo cáo Junit tôi muốn thiết lập siêu liên kết cho các ảnh chụp màn hình được tạo gần đây (tôi đã cập nhật tệp frames-report.xslt bằng cách sử dụng chúng tôi có thể tạo liên kết nhưng nó đã được mã hóa cứng)? Xin đề nghị bất kỳ cách nào để làm như vậy?Làm cách nào để chuyển tham số sang tập lệnh ant?

Dưới đây là một số phần của file build.xml tôi

<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> 

Trả lời

15

Sử dụng Java Hệ thống tài sản

Bạn có thể vượt qua một biến như một đối số JVM. Giả sử bạn có một biến có tên là "screenShotRoot" được định nghĩa như thế này

ant -DscreenShotRoot=/screenshots/testcases 

bạn có thể đọc nó trong build.xml của bạn như

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

nhiệm vụ ANT bạn này sau đó có thể sử dụng đường dẫn gốc này để tạo đường dẫn thích hợp vào tệp PNG của bạn vào ngày được mong đợi.

Xem này Apache ANT FAQ page

Sử dụng Environment Variables

Bạn cũng có thể sử dụng các biến môi trường hệ điều hành, bằng cách đặt chúng trước khi gọi kịch bản của bạn. Giả sử bạn có một biến môi trường có tên là "screenShotRoot" được định nghĩa như thế này trên Windows

SET screenShotRoot=/screenshots/testcases 

bạn có thể đọc nó trong build.xml bạn như thế này

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

Sử dụng thuộc tính tập tin

Bạn cũng có thể viết liên kết của bạn vào tệp thuộc tính mà tập lệnh ANT của bạn tải, như thế này

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

Không cần '' trong trường hợp đầu tiên của bạn. 'env' là khi bạn sử dụng các biến môi trường. Nhưng bạn đang chỉ cách chuyển các giá trị bằng cách sử dụng thuộc tính hệ thống Java ('-Dkey = value'). Ant có thể truy cập trực tiếp các biến đó ('$ {screenShotRoot}'). – sudocode

+0

Cảm ơn, tôi đã cập nhật câu trả lời của tôi với ý kiến ​​của bạn để cung cấp 3 tùy chọn riêng biệt – Brad

+0

cảm ơn, nó đã được giải quyết .. –

1

Theo tài liệu của JUnitReport task, bạn có thể chuyển các tham số XSL bằng cách sử dụng thẻ param lồng nhau trên phần tử report.

Vì Ant 1.7 thẻ báo cáo hỗ trợ thẻ param lồng nhau. Các thẻ này có thể chuyển tham số XSL vào biểu định kiểu.

Vì vậy, bạn có thể vượt qua các giá trị tham số cho một cái gì đó kiểu như thế này:

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

Tôi đã không rõ ràng từ câu hỏi của bạn. Tôi nghĩ bạn đã nói bạn đã hỗ trợ tham số trong biểu định kiểu XSL của mình.Dù sao, đây là tóm tắt về cách bạn có thể sử dụng:

<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

hi, truy vấn của tôi là, tôi sẽ thực hiện nhiều trường hợp thử nghiệm trong một bộ thử nghiệm, trong trường hợp đó tôi nghĩ rất khó để xác định thuộc tính cho mỗi liên kết. Tôi nghĩ rằng cách tiếp cận của bạn sẽ tốt cho trường hợp thử nghiệm đơn lẻ. –

Các vấn đề liên quan