testng對執行失敗的用例,再次執行

2022-07-09 10:27:11 字數 1541 閱讀 1896

前段時間在網路上看到通過重寫testng的介面,可以再次執行失敗的測試用例,於是學習了,我之前的做法是當自己的指令碼中碰到異常,就自動呼叫方法本身來達到再次執行用例的目的,這個過程中有設定重試的次數

對於testng,首先重寫介面iretryanalyzer,重寫該介面中的retry方法,自定義需要重試的次數maxretrynum,如果乙個用例失敗,自動進入retry方法,在此方法中判斷已經重試的次數是否小於等於maxretrynum,如果是,則返回true,則自動再次執行失敗的用例,如果是失敗的用例再次執行還是失敗,那麼還是自動呼叫retry方法,直到到重試次數大於設定的maxretrynum了,則返回false,那麼系統就是判定該方法失敗了

public

class overrideiretry implements

iretryanalyzer

return

false

; }

}

當我們重寫了testng的iretryanalyzer

介面,那麼就需要讓系統呼叫我們重寫的介面,需要讓testng呼叫,還需要對testng.xml中的註解介面進行重寫。先判斷testng.xml中是否有重試分析器,如果沒有,則呼叫我們自己重寫類

public

class overrideiannotationtransformer implements

iannotationtransformer

}}

我們可以定義了2個方法test1和test2,**如下,其中test1方法執行是正確,test2執行一定是會報異常的,那麼預期的結果是,test2方法失敗後,會被再次執行3次

public

class

retrytest

@test

public

void

test2()

}

此時,我們就可以在testng.xml中直接宣告監聽重試的函式了,並且呼叫test1和test2來驗證重寫

iretryanalyzer是否會對失敗的用例重新執行

<?xml version="1.0" encoding="utf-8"?>

class-name="retry.overrideiannotationtransformer">

class>

直接編譯後,我們可以看到log中是顯示這個的,說明了我們的重寫是可以正確的

[info ] main 2015-08-29 09:55:13,030                  retry.overrideiretry     - 方法執行失敗,重試第1次

[info ] main 2015-08-29 09:55:13,031 retry.overrideiretry - 方法執行失敗,重試第2次

[info ] main 2015-08-29 09:55:13,032 retry.overrideiretry - 方法執行失敗,重試第3次

(二)用testng的groups管理用例

測試時經常有兩種場景,第一種是冒煙測試的小部分用例 一類是全部用例。package com.testcases import org.testng.annotations.test import com.pages.loginpage import com.jxl.excel.exceldata i...

unittest用例執行的順序

用例的執行順序涉及多個層級 在多個測試目錄的情況下,先執行哪個目錄?在多個測試檔案的情況下,先執行哪個檔案?在多個測試類的情況下,先執行哪個測試類?在多個測試方法 用例 的情況下,先執行哪個測試方法?import unittest class testbdd unittest.testcase de...

selenium中斷言失敗的用例測試結果為PASS

最近開始學習用python使用selenium寫前端自動化用例,過程中遇到乙個問題。使用斷言設定檢查點,斷言失敗了,但是用例結果為pass。原來的 結構如下 def test create role self self.driver.get url try 建立角色 self.driver.find...