[py-dev] Can py.test collect a test inside a shared library?

Ateljevich, Eli eli at water.ca.gov
Fri Jan 27 16:52:43 CET 2012


Thanks Ronny. I will wrap the C/Fortran in python, name it test_* and expect it to work. I figured if I went that far it would work, since it amounts to just using py.test the normal way on tests that happen to use C library functions to do some work. 

I had hoped that python namespaces were being searched for test_* rather than files. What you suggest about utility function makes sense, and it is my first choice. There is a subtle difference between the more intuitive thing you are suggesting:
1. Code to be tested is in fortran/C, tests are entirely in python, testing system is py.test
and the precise thing I was asking about:
2. Code is in fortran/C, test is in fortran/C (with a helper macro to make it look easy) and the testing system is py.test

That the latter can even be achieved is probably not obvious, but tools such as f2py have a callback system and I can write a little preprocessor macro for wrapping the test so that it looks like it is native but utilizes a python callback function for the assert (which will be a somewhat special one having to do with mpi). So it isn't that hard to achieve a unit testing framework that looks like it is written entirely in the native languages and has a fairly uniform way of treating parallel asserts (ie, it peforms the all-reduce so that the processors agree on pass/fail). 

But possible does not mean well-motivated. I am not sure that approach #2 is best even for my requirements, and it certainly would not be the best practice in general. It was more attractive if test collection would become trivially automatic rather than having to generate a test_* function to shadow each native test. Maybe I could write a custom collection hook to do that, but I don't want to bother anyone further until I run through my requirements and confirm this convoluted approach is actually better at meeting them. 

Thanks,
Eli



________________________________________
From: Ronny Pfannschmidt [Ronny.Pfannschmidt at gmx.de]
Sent: Thursday, January 26, 2012 11:54 PM
To: Ateljevich, Eli
Cc: py-dev at codespeak.net
Subject: Re: [py-dev] Can py.test collect a test inside a shared library?

Hi Eli,

by default py.test searches for test functions test_*.py
as for test functions, they are supposed to start with test as well

it might make sense to slit your c written test function into a few test
util function, that way you can run the c written part step by step, and
do assertions in between (for getting a more detailed idea of whats
wrong, if something goes wrong)

-- Ronny

On 01/27/2012 06:16 AM, Ateljevich, Eli wrote:
> Hi all,
> If I have a test compiled from C or f2py that is called test_something and is compiled to mymod.so (using Linux as the example), would it get collected ... if you grant for the sake of conversation that I could possibly have something useful to put in it? I realize I can't use the usual recompiling of assertion magic.
>
> I tried creating an __init__.py file:
> from mymod import *
>
> and running py.test on the directory without success. Maybe it needs to be in test_something.py? I thought I would check in about whether this is credited with a chance before I double my efforts.
>
> Thanks,
> Eli
> _______________________________________________
> py-dev mailing list
> py-dev at codespeak.net
> http://codespeak.net/mailman/listinfo/py-dev


More information about the Pytest-dev mailing list