my understanding is, that the pytest_pycollect_makeitem
<http://pytest.org/latest/writing_plugins.html#_pytest.hookspec.pytest_pycollect_makeitem>
hook is the official way to do something like that in plain pytest as part
of a conftest or a local plugin

On Tue, Apr 19, 2016 at 1:22 PM, Bruno Oliveira <[email protected]>
wrote:

> Hi Dave,
>
> Using plain pytest that is currently not possible, and I’m not aware of
> any plugin which allows this.
>
> You can implement your own collection rules by implementing the
> pytest_pycollect_makeitem
> <http://pytest.org/latest/writing_plugins.html#_pytest.hookspec.pytest_pycollect_makeitem>
> hook. I suggest taking a look at how pytest itself does it
> <https://github.com/pytest-dev/pytest/blob/master/_pytest/python.py#L306>
> to get some guidance, but I think this would be enough for your case:
>
> # conftest.pyimport inspect
> class X: pass
> def pytest_pycollect_makeitem(collector, name, obj):
>     if inspect.isclass(obj) and issubclass(obj, X):
>         Class = collector._getcustomclass("Class")
>         return Class(name, parent=collector)
> # test_foo.pyfrom conftest import X
> class Foo(X):
>     def test_foo(self):
>         pass
>
> test_foo.py::Foo::test_foo PASSED
>
> ========================== 1 passed in 0.13 seconds 
> ===========================
>
> Cheers,
> Bruno.
> ​
>
> On Tue, Apr 19, 2016 at 7:46 AM Dave <[email protected]> wrote:
>
>> Hi,
>> Instead of discovering tests by name matching is there any way to specify
>> that all subclasses of X be collected?
>>
>> I realise this can be done by subclassing unittest.TestCase but that is a)
>> pretty heavyweight and b) seems to break parameterised fixtures for me.
>>
>>
>> Thanks,
>> Dave
>>
>>
>> _______________________________________________
>> pytest-dev mailing list
>> [email protected]
>> https://mail.python.org/mailman/listinfo/pytest-dev
>>
>
> _______________________________________________
> pytest-dev mailing list
> [email protected]
> https://mail.python.org/mailman/listinfo/pytest-dev
>
>
_______________________________________________
pytest-dev mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pytest-dev

Reply via email to