qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          TestNG開(kāi)源插件Arrow介紹

          TestNG是一個(gè)設(shè)計(jì)用來(lái)簡(jiǎn)化廣泛測(cè)試需求的 測(cè)試框架,旨在涵蓋所有類型的測(cè)試,包括單元測(cè)試功能測(cè)試、端到端集成測(cè)試等,而我們?cè)诨赥estNG搭建自動(dòng)化測(cè)試框架,編寫(xiě)測(cè)試用例時(shí),為保證測(cè) 試用例的穩(wěn)定性,需要增加測(cè)試用例失敗自動(dòng)重跑功能,這便促成了Arrow的誕生。 Arrow是基于TestNG監(jiān)聽(tīng)器擴(kuò)展的插件,如果把TestNG比作一把強(qiáng)勁的弓,那么插件就是配合弓使用的箭,這也是Arrow命名的由來(lái)。
            當(dāng)前Arrow插件已開(kāi)源,可通過(guò)以下地址訪問(wèn):https://github.com/NetEase/arrow
            一、Arrow功能介紹
            1、  支持通過(guò)簡(jiǎn)單配置實(shí)現(xiàn)失敗的測(cè)試用例自動(dòng)重跑
            2、  支持Html結(jié)果報(bào)告中展示測(cè)試用例運(yùn)行次數(shù)
            3、  支持自動(dòng)解析源代碼中的@author標(biāo)簽,在Html結(jié)果報(bào)告中展示(失敗用例可以方便查找維護(hù)者)
            4、  修復(fù)TestNG原生Html報(bào)告中錨點(diǎn)跳轉(zhuǎn)不正確的Bug
            俗話說(shuō),眼見(jiàn)為實(shí)耳聽(tīng)為虛,下面就帶大家看看實(shí)際效果圖吧!
            二、Arrow使用效果
            使用Arrow插件運(yùn)行基于TestNG的測(cè)試用例后會(huì)生成我們自定義的報(bào)告power-emailable-report.html,下圖1顯示 在測(cè)試用例中書(shū)寫(xiě)@author標(biāo)簽,使用arrow執(zhí)行完用例后生成如圖2的結(jié)果報(bào)告,報(bào)告中會(huì)自動(dòng)讀取authors信息以及running counts運(yùn)行次數(shù),通過(guò)authors信息方便自動(dòng)獲取到該用例的維護(hù)者,通過(guò)running counts方便知道當(dāng)前用例是否失敗重跑。
            圖1
            圖2
            三、如何使用Arrow
            使用Arrow無(wú)需修改原有的測(cè)試代碼
            1、  首先你需要有一套TestNG編寫(xiě)的測(cè)試用例
            2、  測(cè)試工程中需要testng.jar(核心不能忘!),log4j.jar(用于日志的輸出)以及我們提供的arrow.jar
            3、  測(cè)試工程根目錄下新建config.properties文件,同時(shí)配置如下參數(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)聽(tīng)器,配置如下,配置完成后通過(guò)ant運(yùn)行TestNG測(cè)試用例后可以在生成的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)聽(tīng)器,配置完成后右鍵testng.xml文件運(yùn)行測(cè)試用例即可
          <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ò)展-失敗用例自動(dòng)截圖
            由于截圖功能在不同的測(cè)試框架上API會(huì)不同,所以當(dāng)前Arrow中沒(méi)有把這個(gè)功能集成進(jìn)來(lái),但是如果你需要該功能也可以很方便的進(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);
          //把截圖寫(xiě)入到Html報(bào)告中方便查看
          Reporter.log("<img src=\"../" + filePath + "\"/>");
          }
          }
            3、修改完成后重新運(yùn)行測(cè)試用例,即可實(shí)現(xiàn)失敗自動(dòng)截圖,同時(shí)會(huì)把截圖寫(xiě)入到Html結(jié)果報(bào)告中,方便定位問(wèn)題,如圖3。
            圖3
            最后,歡迎大家使用以及共同改進(jìn)Arrow,方便大家基于TestNG的測(cè)試工作。

          posted on 2014-03-20 11:24 順其自然EVO 閱讀(2420) 評(píng)論(4)  編輯  收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄

          評(píng)論

          # re: TestNG開(kāi)源插件Arrow介紹 2014-04-23 16:36 11

          ((TakesScreenshor)webdriver)

          這個(gè)webdriver 你是怎么處理的啊?我的總是失敗。  回復(fù)  更多評(píng)論   

          # re: TestNG開(kāi)源插件Arrow介紹 2014-04-23 17:37 11

          有email或QQ沒(méi)?
          上面的問(wèn)題麻煩幫解答下唄。  回復(fù)  更多評(píng)論   

          # re: TestNG開(kāi)源插件Arrow介紹 2014-04-24 16:09 11

          問(wèn)題已解決。需要傳入driver對(duì)象。  回復(fù)  更多評(píng)論   

          # re: TestNG開(kāi)源插件Arrow介紹 2014-05-14 17:34 22

          怎么傳入webdriver呢
          @11  回復(fù)  更多評(píng)論   

          <2014年3月>
          2324252627281
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 望谟县| 九龙坡区| 宜州市| 日土县| 青海省| 甘孜县| 平陆县| 治县。| 杭锦后旗| 泰州市| 普宁市| 哈巴河县| 武强县| 平定县| 基隆市| 南郑县| 开远市| 宁乡县| 肥城市| 泰来县| 松原市| 鞍山市| 和顺县| 德江县| 克什克腾旗| 来凤县| 汉沽区| 昆明市| 乳山市| 望谟县| 承德县| 定陶县| 门头沟区| 涪陵区| 陇南市| 建湖县| 来宾市| 从江县| 卢龙县| 安新县| 巴马|