diff --git a/_pytest/nose.py b/_pytest/nose.py index cde916400..ffa186923 100644 --- a/_pytest/nose.py +++ b/_pytest/nose.py @@ -41,7 +41,7 @@ def pytest_make_collect_report(collector): def call_optional(obj, name): method = getattr(obj, name, None) - if method is not None and not hasattr(method, "_pytestfixturefunction"): + if method is not None and not hasattr(method, "_pytestfixturefunction") and callable(method): # If there's any problems allow the exception to raise rather than # silently ignoring them method() diff --git a/testing/test_nose.py b/testing/test_nose.py index 933b350ab..1d80e241b 100644 --- a/testing/test_nose.py +++ b/testing/test_nose.py @@ -35,6 +35,12 @@ def test_setup_func_with_setup_decorator(): assert not l +def test_setup_func_not_callable(): + from _pytest.nose import call_optional + class A: + f = 1 + call_optional(A(), "f") + def test_nose_setup_func(testdir): p = testdir.makepyfile(""" from nose.tools import with_setup