[py-dev] RFC: draft new resource management API (v1)
holger krekel
holger at merlinux.eu
Thu Jun 28 10:22:52 CEST 2012
On Thu, Jun 28, 2012 at 08:15 +0000, holger krekel wrote:
> I am still fine to consider e. g. the introduction of a pytest.current
> namespace. It could lead to make setup_X methods more powerful::
>
> import pytest
> def setup_module(): # pytest accepts it to keep nose compat
> db = pytest.current.modulenode.getresource("db")
>
> The "current" namespace could be set by the respective node setup
> methods. For classes it's the same idea::
>
> class TestClass:
> def setup_class(cls):
> cls.db = pytest.current.classnode.getresource("db")
>
> Due to the non-declarative nature of this approach, however, i don't
> see a way to rerun the testclass with multiple "db" instances.
Actually i see a way :)
@pytest.mark.uses_resource("db")
class TestClass:
...
This would signal pytest that this class is (somehow) using
the parameter "db" and thus collect multiple variations if the
resource is parametrized at register_factory time. Of course,
plugins such as pytest-django would be able to declare this resource
usage automatically, reducing boilerplate for test writers.
What do you think?
holger
> On a side note, many Java programmers have gone from the old JUnit
> approach to TestNG, see the wikipedia entries. py.test rather
> goes for similar ideas as TestNG.
>
> best,
> holger
>
> >
> > >> Also, I realised this API provides for what is probably most of the
> > >> cases of where I want dynamic resources:
> > >>
> > >> def pytest_setup_init(session):
> > >> for item in my_item_generator():
> > >> session.register_resource_factory(item.name, item)
> > >
> > > Not sure i understand this idea. Is it intended as a mixture of
> > > collection (my_item_generator) and setup (as the hook name suggests)?
> >
> > My bad for writing a bad example, I shouldn't have used the word
> > "item" in there. Anyway the main point is that thanks to
> > .register_resource_factory() taking the name of the resource as an
> > argument I believe most, if not all, the cases where I wanted to
> > create funcargs/resources without knowing what they where beforehand
> > are solved.
> >
> >
> > Regards,
> > Floris
> >
> >
> > --
> > Debian GNU/Linux -- The Power of Freedom
> > www.debian.org | www.gnu.org | www.kernel.org
> >
>
More information about the Pytest-dev
mailing list