py.test skips test class if constructor is defined

pytest, python

Solution

The documentation for py.test says that py.test implements the following standard test discovery:

- collection starts from the initial command line arguments which may be directories, filenames or test ids. recurse into directories, unless they match norecursedirs

- test_*.py or *_test.py files, imported by their package name.

- `Test` prefixed test classes (without an `__init__` method) [<-- notice this one here]

- `test_` prefixed test functions or methods are test items

So it's not that the constructor isn't needed, py.test just ignores classes that have a constructor. There is also a guide for changing the standard test discovery.

Problem

I have following unittest code running via py.test. Mere presence of the constructor make the entire class skip when running py.test -v -s collected 0 items / 1 skipped Can anyone please explain to me this behaviour of py.test? I am interested in understanding py.test behaviour, I know the constructor is not needed. Thanks, Zdenek ``` class TestClassName(object): def __init__(self): pass def setup_method(self, method): print "setup_method called" def teardown_method(self, method): print "teardown_method called" def test_a(self): print "test_a called" assert 1 == 1 def test_b(self): print "test_b called" assert 1 == 1 ```

Original source