[TIP] Getting Weird Coverage Reports

holger krekel holger at merlinux.eu
Sat Nov 26 04:34:56 PST 2011

On Sat, Nov 26, 2011 at 21:33 +1100, meme dough wrote:
> I will consider the implications of moving coverage start earlier, it
> could be problematic.
> However, in the first instance pytest_configure is very early and
> there are 2 approaches you could take immediately.
> First use pytest_sessionstart instead of pytest_configure for your
> setup doing a multicall so that cov is called before your setup.
> Without checking something along the lines of:
>     def pytest_sessionstart(self,__multicall__, session):
>         __multicall__.execute()
>         # your setup here now that coverage is active

In fact, using "__multicall__" is still somewhat of an internal API and
nowadays it's better to write:

    def pytest_sessionstart(self, session):

which should take care to execute this function as late as possible in
the chain of hook implementations.

> Second, use pytest funcargs for test fixtures.  So have a funcarg
> which only once per session (cached_setup with session scope) does the
> setup and teardown that you want.  IMHO funcargs are much better than
> xunit style test fixtures.


> Finally, I don't see any session scope xunit style test fixture.
> Would it be worth considering adding one?  Some may point out that
> hooks like pytest_configure or pytest_sessionstart could be used for
> this purpose, but I think the purpose is actually different.  Having
> session scope test fixture (funcarg or xunit style) gives a clear
> place for test fixture code.

not sure what you mean -- funcargs allow a per-session scope, see


More information about the testing-in-python mailing list