New issue 683: Bug with parameterized classes when running tests twice
https://bitbucket.org/hpk42/pytest/issue/683/bug-with-parameterized-classes-when
astrofrog:
If we consider the following example and place it in a file called
``test_double.py``:
```
import pytest
class TestA(object):
pass
@pytest.mark.parametrize(('model_class'), [1,2,3])
class TestB(TestA):
def test_1(self, model_class):
pass
```
We can then try and run this with:
```
py.test test_double.py test_double.py
```
This produces the following error:
```
========================================================= test session starts
==========================================================
platform darwin -- Python 3.4.2 -- py-1.4.23 -- pytest-2.6.1
plugins: cov, xdist
collected 3 items / 1 errors
test_double.py ...
================================================================ ERRORS
================================================================
___________________________________________________ ERROR collecting
test_double.py ____________________________________________________
../Library/Python/3.4/lib/python/site-packages/_pytest/runner.py:139: in
__init__
self.result = func()
../Library/Python/3.4/lib/python/site-packages/_pytest/main.py:438: in
_memocollect
return self._memoizedcall('_collected', lambda: list(self.collect()))
../Library/Python/3.4/lib/python/site-packages/_pytest/main.py:315: in
_memoizedcall
res = function()
../Library/Python/3.4/lib/python/site-packages/_pytest/main.py:438: in <lambda>
return self._memoizedcall('_collected', lambda: list(self.collect()))
../Library/Python/3.4/lib/python/site-packages/_pytest/python.py:538: in collect
return super(Instance, self).collect()
../Library/Python/3.4/lib/python/site-packages/_pytest/python.py:333: in collect
res = self.makeitem(name, obj)
../Library/Python/3.4/lib/python/site-packages/_pytest/python.py:345: in
makeitem
collector=self, name=name, obj=obj)
../Library/Python/3.4/lib/python/site-packages/_pytest/main.py:166: in
call_matching_hooks
return hookmethod.pcall(plugins, **kwargs)
../Library/Python/3.4/lib/python/site-packages/_pytest/core.py:417: in pcall
return self._docall(methods, kwargs)
../Library/Python/3.4/lib/python/site-packages/_pytest/core.py:424: in _docall
res = mc.execute()
../Library/Python/3.4/lib/python/site-packages/_pytest/core.py:315: in execute
res = method(**kwargs)
../Library/Python/3.4/lib/python/site-packages/_pytest/python.py:236: in
pytest_pycollect_makeitem
return list(collector._genfunctions(name, obj))
../Library/Python/3.4/lib/python/site-packages/_pytest/python.py:361: in
_genfunctions
gentesthook.pcall(plugins, metafunc=metafunc)
../Library/Python/3.4/lib/python/site-packages/_pytest/core.py:417: in pcall
return self._docall(methods, kwargs)
../Library/Python/3.4/lib/python/site-packages/_pytest/core.py:424: in _docall
res = mc.execute()
../Library/Python/3.4/lib/python/site-packages/_pytest/core.py:315: in execute
res = method(**kwargs)
../Library/Python/3.4/lib/python/site-packages/_pytest/python.py:146: in
pytest_generate_tests
metafunc.parametrize(*marker.args, **marker.kwargs)
../Library/Python/3.4/lib/python/site-packages/_pytest/python.py:836: in
parametrize
param_index)
../Library/Python/3.4/lib/python/site-packages/_pytest/python.py:717: in
setmulti
self._checkargnotcontained(arg)
../Library/Python/3.4/lib/python/site-packages/_pytest/python.py:700: in
_checkargnotcontained
raise ValueError("duplicate %r" %(arg,))
E ValueError: duplicate 'model_class'
```
We discovered this because when running Astropy tests twice in a row:
```
import astropy
astropy.test()
astropy.test()
```
the same error occurs.
_______________________________________________
pytest-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pytest-commit