fix ordering when mock.patch or other standard decorator-wrappings
are used with test methods. This fixues issue346. Thanks to Ronny Pfannschmidt and Donald Stufft for helping to isolate it.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import pytest
|
||||
from _pytest import runner
|
||||
from _pytest import python
|
||||
|
||||
class TestOEJSKITSpecials:
|
||||
def test_funcarg_non_pycollectobj(self, testdir): # rough jstests usage
|
||||
@@ -55,6 +56,20 @@ class TestOEJSKITSpecials:
|
||||
assert not clscol.funcargs
|
||||
|
||||
|
||||
def test_wrapped_getfslineno():
|
||||
def func():
|
||||
pass
|
||||
def wrap(f):
|
||||
func.__wrapped__ = f
|
||||
func.patchings = ["qwe"]
|
||||
return func
|
||||
@wrap
|
||||
def wrapped_func(x, y, z):
|
||||
pass
|
||||
fs, lineno = python.getfslineno(wrapped_func)
|
||||
fs2, lineno2 = python.getfslineno(wrap)
|
||||
assert lineno > lineno2, "getfslineno does not unwrap correctly"
|
||||
|
||||
class TestMockDecoration:
|
||||
def test_wrapped_getfuncargnames(self):
|
||||
from _pytest.python import getfuncargnames
|
||||
@@ -119,6 +134,28 @@ class TestMockDecoration:
|
||||
reprec = testdir.inline_run()
|
||||
reprec.assertoutcome(passed=2)
|
||||
|
||||
def test_mock_sorting(self, testdir):
|
||||
pytest.importorskip("mock", "1.0.1")
|
||||
testdir.makepyfile("""
|
||||
import os
|
||||
import mock
|
||||
|
||||
@mock.patch("os.path.abspath")
|
||||
def test_one(abspath):
|
||||
pass
|
||||
@mock.patch("os.path.abspath")
|
||||
def test_two(abspath):
|
||||
pass
|
||||
@mock.patch("os.path.abspath")
|
||||
def test_three(abspath):
|
||||
pass
|
||||
""")
|
||||
reprec = testdir.inline_run()
|
||||
calls = reprec.getreports("pytest_runtest_logreport")
|
||||
calls = [x for x in calls if x.when == "call"]
|
||||
names = [x.nodeid.split("::")[-1] for x in calls]
|
||||
assert names == ["test_one", "test_two", "test_three"]
|
||||
|
||||
|
||||
class TestReRunTests:
|
||||
def test_rerun(self, testdir):
|
||||
|
||||
Reference in New Issue
Block a user