Hi Holger,
Here below is an example: def pytest_funcarg__app(request): def setup(): # Blocking call to start(), returns when application has finished booting up app.start() return app def teardown(val): app.stop() return request.cached_setup( setup=setup, teardown=teardown, scope='session', extrakey='app' ) Now, during setup(), when the process is waiting for the app to boot, if a keyboardinterrupt is raised (say by the user during from the test execution summary screen) then it will not call the teardown() of this funcarg 'app'. I assume this is because py.test assumes that the setup() of 'app' has not been finished and therefor it is not in a proper state for teardown() of 'app'. Regards, Parham On 12 July 2012 12:05, holger krekel <hol...@merlinux.eu> wrote: > > Hi Pärham, > > On Thu, Jul 12, 2012 at 11:46 +0200, Pärham Fazelzadeh H wrote: > > Hi all, > > > > I am using py.test to perform integration and functional testing of an > > application and had some issues with interrupts and was advised to submit > > my use case. > > > > Basically the problem is related to funcargs and how setup() and teardown() > > are affected by interrupts. The issue we are having is that some of our > > funcargs take longer to setup than what is maybe recommended. One of the > > funcargs instantiate and start the application that is to be tested and > > this can take some time; in the setup() you basically wait for the > > application to boot up to verify that it has started. If a > > KeyboardInterrupt is raised during setup() it will leave the application in > > a dirty state since no teardown will be run, i.e the application will be > > left running. Similarly this can happen during configuration stages in > > funcargs. > > > > I learned that this is default behaviour (and also reasonable), seeing as > > the idea is that funcargs should be small and be fast. > > funcargs with a longer setup are fine. I am not sure i understand > how you are missing teardowns. How do you perform teardown, with > request.addfinalizer()? Can you provide a little examples that reproduces > the problem? > > best, > > holger > > > Still, this is our use case so here you go! :) > > > > Regards, > > Parham > > > _______________________________________________ > > py-dev mailing list > > py-dev@codespeak.net > > http://codespeak.net/mailman/listinfo/py-dev >
_______________________________________________ py-dev mailing list py-dev@codespeak.net http://codespeak.net/mailman/listinfo/py-dev