fix teardown-ordering for parametrized setups/teardowns
This commit is contained in:
parent
036557ac18
commit
f28f073c7c
|
@ -4,6 +4,8 @@ Changes between 2.3.1 and 2.3.2.dev
|
||||||
- fix issue205 - conftests in subdirs customizing
|
- fix issue205 - conftests in subdirs customizing
|
||||||
pytest_pycollect_makemodule now work properly
|
pytest_pycollect_makemodule now work properly
|
||||||
|
|
||||||
|
- fix teardown-ordering for parametrized setups
|
||||||
|
|
||||||
- fix exception message check of test_nose.py to pass on python33 as well
|
- fix exception message check of test_nose.py to pass on python33 as well
|
||||||
|
|
||||||
- fix issue206 - fix test_assertrewrite.py to work when a global
|
- fix issue206 - fix test_assertrewrite.py to work when a global
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
#
|
#
|
||||||
__version__ = '2.3.2.dev5'
|
__version__ = '2.3.2.dev6'
|
||||||
|
|
|
@ -1531,7 +1531,7 @@ class FixtureManager:
|
||||||
item.session._setupstate._callfinalizers((name, param))
|
item.session._setupstate._callfinalizers((name, param))
|
||||||
l = self._arg2finish.get(name)
|
l = self._arg2finish.get(name)
|
||||||
if l is not None:
|
if l is not None:
|
||||||
for fin in l:
|
for fin in reversed(l):
|
||||||
fin()
|
fin()
|
||||||
|
|
||||||
def parsefactories(self, node_or_obj, nodeid=None, unittest=False):
|
def parsefactories(self, node_or_obj, nodeid=None, unittest=False):
|
||||||
|
|
2
setup.py
2
setup.py
|
@ -24,7 +24,7 @@ def main():
|
||||||
name='pytest',
|
name='pytest',
|
||||||
description='py.test: simple powerful testing with Python',
|
description='py.test: simple powerful testing with Python',
|
||||||
long_description = long_description,
|
long_description = long_description,
|
||||||
version='2.3.2.dev5',
|
version='2.3.2.dev6',
|
||||||
url='http://pytest.org',
|
url='http://pytest.org',
|
||||||
license='MIT license',
|
license='MIT license',
|
||||||
platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
|
platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
|
||||||
|
|
|
@ -2763,6 +2763,43 @@ class TestFixtureMarker:
|
||||||
reprec = testdir.inline_run("-v")
|
reprec = testdir.inline_run("-v")
|
||||||
reprec.assertoutcome(passed=12+1)
|
reprec.assertoutcome(passed=12+1)
|
||||||
|
|
||||||
|
def test_parametrized_fixture_teardown_order(self, testdir):
|
||||||
|
testdir.makepyfile("""
|
||||||
|
import pytest
|
||||||
|
@pytest.fixture(params=[1,2], scope="class")
|
||||||
|
def param1(request):
|
||||||
|
return request.param
|
||||||
|
|
||||||
|
l = []
|
||||||
|
|
||||||
|
class TestClass:
|
||||||
|
@classmethod
|
||||||
|
@pytest.fixture(scope="class", autouse=True)
|
||||||
|
def setup1(self, request, param1):
|
||||||
|
l.append(1)
|
||||||
|
request.addfinalizer(self.teardown1)
|
||||||
|
@classmethod
|
||||||
|
def teardown1(self):
|
||||||
|
assert l.pop() == 1
|
||||||
|
@pytest.fixture(scope="class", autouse=True)
|
||||||
|
def setup2(self, request, param1):
|
||||||
|
l.append(2)
|
||||||
|
request.addfinalizer(self.teardown2)
|
||||||
|
@classmethod
|
||||||
|
def teardown2(self):
|
||||||
|
assert l.pop() == 2
|
||||||
|
def test(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_finish():
|
||||||
|
assert not l
|
||||||
|
""")
|
||||||
|
result = testdir.runpytest("-v")
|
||||||
|
result.stdout.fnmatch_lines("""
|
||||||
|
*3 passed*
|
||||||
|
""")
|
||||||
|
assert "error" not in result.stdout.str()
|
||||||
|
|
||||||
def test_parametrize_separated_lifecycle(self, testdir):
|
def test_parametrize_separated_lifecycle(self, testdir):
|
||||||
testdir.makepyfile("""
|
testdir.makepyfile("""
|
||||||
import pytest
|
import pytest
|
||||||
|
|
Loading…
Reference in New Issue