fix issue320 - fix class scope for fixtures when mixed with
module-level functions. Thanks Anatloy Bubenkoff.
This commit is contained in:
commit
13ddce2381
1
AUTHORS
1
AUTHORS
|
@ -9,6 +9,7 @@ Floris Bruynooghe
|
|||
Jason R. Coombs
|
||||
Wouter van Ackooy
|
||||
Samuele Pedroni
|
||||
Anatoly Bubenkoff
|
||||
Brianna Laugher
|
||||
Carl Friedrich Bolz
|
||||
Armin Rigo
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
Changes between 2.3.5 and 2.4.DEV
|
||||
-----------------------------------
|
||||
|
||||
- fix issue320 - fix class scope for fixtures when mixed with
|
||||
module-level functions. Thanks Anatloy Bubenkoff.
|
||||
|
||||
- you can specify "-q" or "-qq" to get different levels of "quieter"
|
||||
reporting (thanks Katarzyna Jachim)
|
||||
|
||||
|
|
|
@ -1317,7 +1317,8 @@ class FixtureRequest(FuncargnamesCompatAttr):
|
|||
x = self._pyfuncitem.getparent(pytest.Class)
|
||||
if x is not None:
|
||||
return x
|
||||
scope = "module"
|
||||
# fallback to function
|
||||
return self._pyfuncitem
|
||||
if scope == "module":
|
||||
return self._pyfuncitem.getparent(pytest.Module)
|
||||
raise ValueError("unknown finalization scope %r" %(scope,))
|
||||
|
|
|
@ -513,12 +513,12 @@ class TestRequestCachedSetup:
|
|||
|
||||
def test_request_cachedsetup_class(self, testdir):
|
||||
reprec = testdir.inline_runsource("""
|
||||
mysetup = ["hello", "hello2"].pop
|
||||
mysetup = ["hello", "hello2", "hello3"].pop
|
||||
|
||||
def pytest_funcarg__something(request):
|
||||
return request.cached_setup(mysetup, scope="class")
|
||||
def test_func1(something):
|
||||
assert something == "hello2"
|
||||
assert something == "hello3"
|
||||
def test_func2(something):
|
||||
assert something == "hello2"
|
||||
class TestClass:
|
||||
|
@ -1090,7 +1090,7 @@ class TestAutouseManagement:
|
|||
def arg():
|
||||
l.append(1)
|
||||
return 0
|
||||
@pytest.fixture(scope="class", autouse=True)
|
||||
@pytest.fixture(scope="module", autouse=True)
|
||||
def something(arg):
|
||||
l.append(2)
|
||||
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
"""Tests for fixtures with different scoping."""
|
||||
|
||||
|
||||
def test_class_scope_with_normal_tests(testdir):
|
||||
testpath = testdir.makepyfile("""
|
||||
import pytest
|
||||
|
||||
class Box:
|
||||
value = 0
|
||||
|
||||
@pytest.fixture(scope='class')
|
||||
def a(request):
|
||||
Box.value += 1
|
||||
return Box.value
|
||||
|
||||
def test_a(a):
|
||||
assert a == 1
|
||||
|
||||
class Test1:
|
||||
def test_b(self, a):
|
||||
assert a == 2
|
||||
|
||||
class Test2:
|
||||
def test_c(self, a):
|
||||
assert a == 3""")
|
||||
reprec = testdir.inline_run(testpath)
|
||||
for test in ['test_a', 'test_b', 'test_c']:
|
||||
assert reprec.matchreport(test).passed
|
Loading…
Reference in New Issue