<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          NetEase ArrowTestNG 監(jiān)聽器擴(kuò)展插件

          聯(lián)合創(chuàng)作 · 2023-10-01 22:14

          TestNG 是一個設(shè)計(jì)用來簡化廣泛測試需求的 測試框架,旨在涵蓋所有類型的測試,包括單元測試、功能測試、端到端集成測試等,而我們在基于TestNG搭建自動化測試框架,編寫測試用例時,為保證測試用例的穩(wěn)定性,需要增加測試用例失敗自動重跑功能,這便促成了Arrow 的誕生。 Arrow是基于TestNG監(jiān)聽器擴(kuò)展的插件,如果把TestNG比作一把強(qiáng)勁的弓,那么插件就是配合弓使用的箭,這也是Arrow命名的由來。

          一、Arrow功能介紹

          1、  支持通過簡單配置實(shí)現(xiàn)失敗的測試用例自動重跑

          2、  支持Html結(jié)果報(bào)告中展示測試用例運(yùn)行次數(shù)

          3、  支持自動解析源代碼中的@author標(biāo)簽,在Html結(jié)果報(bào)告中展示(失敗用例可以方便查找維護(hù)者)

          4、  修復(fù)TestNG原生Html報(bào)告中錨點(diǎn)跳轉(zhuǎn)不正確的Bug

          俗話說,眼見為實(shí)耳聽為虛,下面就帶大家看看實(shí)際效果圖吧!

          二、Arrow使用效果

          使用Arrow插件運(yùn)行基于TestNG的測試用例后會生成我們自定義的報(bào)告power-emailable-report.html,下圖1顯示 在測試用例中書寫@author標(biāo)簽,使用arrow執(zhí)行完用例后生成如圖2的結(jié)果報(bào)告,報(bào)告中會自動讀取authors信息以及running counts運(yùn)行次數(shù),通過authors信息方便自動獲取到該用例的維護(hù)者,通過running counts方便知道當(dāng)前用例是否失敗重跑。

           

                                圖1

                                圖2

          三、如何使用Arrow

          使用Arrow無需修改原有的測試代碼

          1、  首先你需要有一套TestNG編寫的測試用例

          2、  測試工程中需要testng.jar(核心不能忘!),log4j.jar(用于日志的輸出)以及我們提供的arrow.jar

          3、  測試工程根目錄下新建config.properties文件,同時配置如下參數(shù)

          retrycount=1 #定義重跑次數(shù),不是必填項(xiàng), 默認(rèn)值是0,即失敗不重跑
          
          sourcecodedir=src #定義源代碼路徑,不是必填項(xiàng), 默認(rèn)值是src
          
          sourcecodeencoding=UTF-8 #定義源代碼編碼,不是必填項(xiàng),默認(rèn)值是utf-8

          4、  在build.xml文件中加入監(jiān)聽器,配置如下,配置完成后通過ant運(yùn)行TestNG測試用例后可以在生成的Html結(jié)果報(bào)告中查看效果

          <target name="testng">
          <mkdir dir="test-output" />
          <testng outputDir="test-output"
          haltonfailure="false" listeners="com.netease.qa.testng.PowerEmailableReporter,
          com.netease.qa.testng.RetryListener, com.netease.qa.testng.TestResultListener">
          <xmlfileset dir="." includes="testng.xml" />
          </testng>
          </target>

          5、  如果您不習(xí)慣4的做法,可以在testng.xml中加入如下的監(jiān)聽器,配置完成后右鍵testng.xml文件運(yùn)行測試用例即可

          <listeners>
          <listener class-name="com.netease.qa.testng.TestResultListener" />
          <listener class-name="com.netease.qa.testng.RetryListener" />
          <listener class-name="com.netease.qa.testng.PowerEmailableReporter" />
          </listeners>

          四、Arrow擴(kuò)展-失敗用例自動截圖

          由于截圖功能在不同的測試框架上API會不同,所以當(dāng)前Arrow中沒有把這個功能集成進(jìn)來,但是如果你需要該功能也可以很方便的進(jìn)行擴(kuò)展。

          1、 下載Arrow的源代碼

          2、 修改TestResultListener類,在onTestSkipped以及onTestFailure方法中加入如下代碼

                 @Override
                  public void onTestFailure(ITestResult tr) {
                         super.onTestFailure(tr);
                         saveScreenShot(tr);
                  }
          
                  @Override
                  public void onTestSkipped(ITestResult tr) {
                         super.onTestSkipped(tr);
                         saveScreenShot(tr);
                  }
          
                  private void saveScreenShot(ITestResult tr) {
                         SimpleDateFormat formatter = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
                         String mDateTime = formatter.format(new Date());
                         String fileName = mDateTime + "_" + tr.getName();
                         String filePath = "";
                         try {
                             //這里可以調(diào)用不同框架的截圖功能
                             File screenshot = ((TakesScreenshor)webdriver).getScreenshotas(OutputType.FILE);
                             filePath = “screenshot/” + filename + “.jpg”
                             File destFile = new File(filePath);
                             FileUtils.copyFile(screenshot, destFile);
          
                         } catch (Exception e) {
                                 filePath = fileName + " firefox tackScreentshot Failure:" + e.getMessage();
                                 logger.error(filePath);
                         }
          
                         if (!"".equals(filePath)) {
                              Reporter.setCurrentTestResult(tr);
                              Reporter.log(filePath);
                              //把截圖寫入到Html報(bào)告中方便查看
                              Reporter.log("<img src=\"../" + filePath + "\"/>");
                         }
                  }

          3、修改完成后重新運(yùn)行測試用例,即可實(shí)現(xiàn)失敗自動截圖,同時會把截圖寫入到Html結(jié)果報(bào)告中,方便定位問題,如圖3。

           圖3

          最后,歡迎大家使用以及共同改進(jìn)Arrow,方便大家基于TestNG的測試工作。

          介紹來自:http://qa.blog.163.com/blog/static/1901470022014245230459/

          瀏覽 21
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人黄色AV网站 | 天堂网中文字幕在线观看 | 狠狠狠综合 | 乱子伦国产精品www | 无码一区二区三区久久网站 |