[py-dev] How can I use py.test in trytond
holger krekel
holger at merlinux.eu
Mon Apr 4 09:37:36 CEST 2011
Hi Nicolas,
On Sun, Apr 03, 2011 at 23:51 +0200, Nicolas Évrard wrote:
> Hello,
>
> I develop on tryton[1] and I'd like to use py.test to test the new
> modules I am writing for it.
>
> This framework has a concept of modularity that allows some module to
> override the definition of objects. An example will probably help
> understanding the situation.
>
> So we have the base trytond module which contains a `modules`
> directory with the list of available modules (they are all imported
> but not necessarily installed).
>
> project/
> bin/
> trytond/
> modules/
> ...
> sale/
> sale_cost/
> ...
>
> So when you install the sale_cost module the object defined on the
> sale module are extended with more fields and the methods might be
> extended to fit the business case.
>
> Currently I use a conftest.py file in the top directory in order to
> define funcargs for my tests. But it looks like a suboptimal solution.
>
> I think I can use plugins in order to do the following:
>
> 1. Define a funcarg `sale` in the sale module
> 2. Define a funcarg `sale` in the sale_cost module. This funcarg
> should ideally use the funcarg from `sale` and extend it with
> various information (if allowed to do so by the business rule).
> 3. Calling py.test trytond/modules/sale_cost from the project/
> directory should work
>
> This setup would allow me to provide funcargs for use to other
> developers on which they can base their own tests.
>
> Right now I noticed that the funcargs are loaded recursively. Do you
> think it is possible to write a plugin that would read the dependency
> information in the sale_cost module and use it to setup the conftests
> file found in those modules to be imported *before* the conftest.py
> from sale_cost ?
>
> If it is, do you have any pointers on how I can do this ?
request.getfuncargvalue() can be called to decorate an existing funcarg,
see http://bit.ly/eiByLF
However, i guess you could just have a single conftest.py which provides different
values for your funcargs depending on which directory they are requested from.
(``request.module.fspath`` gives you the file system path of the python module.)
This way you would encode all the logic in one place.
HTH,
holger
> BTW, py.test is a really nice piece of software and I really enjoy
> using it.
BTW, nice to hear :)
>
> [1]: http://www.tryton.org/
>
> --
> (°> Nicolas Évrard
> ( ) Liège
> `¯
> _______________________________________________
> py-dev mailing list
> py-dev at codespeak.net
> http://codespeak.net/mailman/listinfo/py-dev
More information about the Pytest-dev
mailing list