Per il mio stage, devo utilizzare TestNG e selenio per testare un'applicazione web. Ma ho un problema, a volte il selenio o il browser non funziona per qualche motivo casuale, quindi un test di lavoro è contrassegnato come "fallito". Per evitare ciò, posso usare l'annotazione @Test(invocationCount = 4, successPercentage = 25)
, quindi se il test ha esito positivo una volta, il test è contrassegnato come "Successo", è buona, ma il problema è che questa soluzione moltiplica il tempo per il test di 4, questo non è molto efficiente .Come ottimizzare i test di test e selenio
Cosa posso fare per ridurre il tempo di test, è scrivere una regola "se il test non è riuscito, rieseguire questo test (e solo se il test ha fallito), e se ha funzionato il secondo, terzo o il quarta volta, quindi contrassegnare questo test come "successo" "Così posso evitare questi bug casuali. Ma non ho trovato come scrivere questa regola, ho visto che possiamo aggiungere un listener, quindi abbiamo un metodo chiamato "onTestFailure
" così posso fare qualcosa quando il test ha fallito, ma non so come eseguire il test.
Ho trovato anche testng-failed.xml dove sono stati salvati tutti i test non riusciti, quindi è possibile eseguire questo file xml per rieseguire questi test, ma questo cancellerà il report dalla prima esecuzione precedente, ma voglio solo che il i test falliti sono contrassegnati come "riusciti" se la seconda esecuzione ha esito positivo. (Ho integrato testNG/selenio a Jenkins, quindi ho un grafico con tutti i test, quindi questo metodo non è molto adatto, ma questo metodo non moltiplica il tempo per il test di 4 e questo è quello che voglio)
Quindi, se hai qualche idea su come farlo, sarebbe molto bello.
Ho testato per eseguire testng-failed.xml per 3 volte, quindi tutti i test sono funzionanti e non ci vuole molto tempo. Ma con Jenkins, quando il testng-failed.xml viene eseguito l'ultima volta, questo modificherà il testng-result.xml, quindi ora il grafico indica "1 test eseguito, 1 riuscito", perché l'ultima esecuzione, testng ha lanciato solo questo test che fallì le prime 3 volte. Questo metodo produrrà un grafico con tutti i test falliti, ma tutti i test di lavoro (eccetto i test eseguiti la terza volta) non saranno indicati, non è esattamente quello che voglio ... qualche indizio? – user1000499