Duplicated counting test case numbers with pytest-rerunfailures plugin

Abierto
#76 2 comentarios 0 reacciones 1 asignado Ver en GitHub

@gnikonorov ya está trabajando en esto.

Desde el 2/8/2020.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

If one test cases failed in teardown method with --reruns=1, this case will be calculated as 2 cases.

Test code:

class Test1(object):

    def teardown_method(self, method):
        raise Exception('tewrdown method error')

    def test1(self):
        pass

with --reruns=1:

$ py.test test_rerun.py -v -s --junitxml=test-result.xml --reruns=1
=============================================================== test session starts ================================================================
platform darwin -- Python 2.7.14, pytest-2.9.1, py-1.7.0, pluggy-0.3.1 -- /Users/jzhang/miniconda2/envs/p2/bin/python
cachedir: .cache
rootdir: /Users/jzhang/Desktop/test_log, inifile:
plugins: rerunfailures-4.1
collected 1 items

test_rerun.py::Test1::test1 PASSED
test_rerun.py::Test1::test1 RERUN
test_rerun.py::Test1::test1 PASSED
test_rerun.py::Test1::test1 ERROR

---------------------------------------- generated xml file: /Users/jzhang/Desktop/test_log/test-result.xml ----------------------------------------
====================================================================== ERRORS ======================================================================
_________________________________________________________ ERROR at teardown of Test1.test1 _________________________________________________________

self = <test_rerun.Test1 object at 0x104073190>, method = <bound method Test1.test1 of <test_rerun.Test1 object at 0x104073190>>

    def teardown_method(self, method):
>       raise Exception('tewrdown method error')
E       Exception: tewrdown method error

test_rerun.py:4: Exception
==================================================== 2 passed, 1 error, 1 rerun in 0.02 seconds ====================================================
(p2) # ~/Desktop/test_log [18:10:33] C:1
$ more test-result.xml
<?xml version="1.0" encoding="utf-8"?><testsuite errors="1" failures="0" name="pytest" skips="0" tests="2" time="0.015"><testcase classname="test_rerun.Test1" file="test_rerun.py" line="5" name="test1" time="0.00033712387085"></testcase><testcase classname="test_rerun.Test1" file="test_rerun.py" line="5" name="test1" time="0.000302791595459"><error message="test setup failure">self = &lt;test_rerun.Test1 object at 0x104073190&gt;, method = &lt;bound method Test1.test1 of &lt;test_rerun.Test1 object at 0x104073190&gt;&gt;

    def teardown_method(self, method):
&gt;       raise Exception(&apos;tewrdown method error&apos;)
E       Exception: tewrdown method error

test_rerun.py:4: Exception</error></testcase></testsuite>

It calculated the number of test cases as 2, we can see tests="2".

when run this case without --retrun=1:

$ py.test test_rerun.py -v -s --junitxml=test-result.xml
=============================================================== test session starts ================================================================
platform darwin -- Python 2.7.14, pytest-2.9.1, py-1.7.0, pluggy-0.3.1 -- /Users/jzhang/miniconda2/envs/p2/bin/python
cachedir: .cache
rootdir: /Users/jzhang/Desktop/test_log, inifile:
plugins: rerunfailures-4.1
collected 1 items

test_rerun.py::Test1::test1 PASSED
test_rerun.py::Test1::test1 ERROR

---------------------------------------- generated xml file: /Users/jzhang/Desktop/test_log/test-result.xml ----------------------------------------
====================================================================== ERRORS ======================================================================
_________________________________________________________ ERROR at teardown of Test1.test1 _________________________________________________________

self = <test_rerun.Test1 object at 0x103d40d50>, method = <bound method Test1.test1 of <test_rerun.Test1 object at 0x103d40d50>>

    def teardown_method(self, method):
>       raise Exception('tewrdown method error')
E       Exception: tewrdown method error

test_rerun.py:4: Exception
======================================================== 1 passed, 1 error in 0.02 seconds =========================================================
(p2) # ~/Desktop/test_log [18:19:55] C:1
$ more test-result.xml
<?xml version="1.0" encoding="utf-8"?><testsuite errors="1" failures="0" name="pytest" skips="0" tests="1" time="0.015"><testcase classname="test_rerun.Test1" file="test_rerun.py" line="5" name="test1" time="0.000448226928711"><error message="test setup failure">self = &lt;test_rerun.Test1 object at 0x103d40d50&gt;, method = &lt;bound method Test1.test1 of &lt;test_rerun.Test1 object at 0x103d40d50&gt;&gt;

    def teardown_method(self, method):
&gt;       raise Exception(&apos;tewrdown method error&apos;)
E       Exception: tewrdown method error

test_rerun.py:4: Exception</error></testcase></testsuite>

It calculated the number of test cases as 1, we can see tests="1", it looks more reasonable.

Lenguaje dominante
Python
Estrellas
481
Forks
110
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de pytest-dev/pytest-rerunfailures

Todos los issues de pytest-dev/pytest-rerunfailures

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.