AbdealiJK added a comment.
Yeah, You're right. It should not even be collected.
I also made this simpler testcase to test this out:
import unittest
def test_abc():
pass
def test_abc_not_run():
pass
test_abc_not_run.__test__ = False
class ClassTest(unittest.TestCase):
def test_class_abc(self):
pass
class NotRunClassTest(unittest.TestCase):
__test__ = False
def test_class_abc_not_run(self):
pass
class ClassMeta(type):
def __new__(cls, name, bases, dct):
for name in ['abc', 'abc_not_run']:
test_name = 'test_metaclass_' + name
dct[test_name] = lambda self: None
dct[test_name].__name__ = test_name
dct['test_metaclass_abc_not_run'].__test__ = False
return super(ClassMeta, cls).__new__(cls, name, bases, dct)
class ClassMetaTest(unittest.TestCase):
__metaclass__ = ClassMeta
And I used the conftest:
def pytest_runtest_setup(item):
print
print ' __test__ for', item, "is", getattr(item._obj, '__test__',
None)
Results got:
$ py.test --capture=no -vvv
platform linux2 -- Python 2.7.6, pytest-2.9.1, py-1.4.31, pluggy-0.3.1 --
/home/ajk/Documents/wiki/venv/bin/python
#REMOVED CONTENT#
collected 4 items
test_abc.py::ClassMetaTest::test_metaclass_abc
__test__ for <TestCaseFunction 'test_metaclass_abc'> is None
PASSED
test_abc.py::ClassMetaTest::test_metaclass_abc_not_run
__test__ for <TestCaseFunction 'test_metaclass_abc_not_run'> is False
PASSED
test_abc.py::test_abc
__test__ for <Function 'test_abc'> is None
PASSED
test_abc.py::ClassTest::test_class_abc
__test__ for <TestCaseFunction 'test_class_abc'> is None
PASSED
===================================== 4 passed in 2.37 seconds
=====================================
TASK DETAIL
https://phabricator.wikimedia.org/T135594
EMAIL PREFERENCES
https://phabricator.wikimedia.org/settings/panel/emailpreferences/
To: jayvdb, AbdealiJK
Cc: Aklapper, Zppix, pywikibot-bugs-list, AbdealiJK, jayvdb, Mdupont
_______________________________________________
pywikibot-bugs mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikibot-bugs