[py-dev] QuickCheck plugin

Mark Sienkiewicz sienkiew at stsci.edu
Fri Dec 9 16:43:22 CET 2011


On 12/08/11 02:30, Jacek Generowicz wrote:
>
> 3. Would you have any general advice on how one might approach
> providing a QuickCheck clone on top of pytest?

 From your description of QuickCheck, I suggest a modular approach where you do not implement QuickCheck inside py.test, but instead use py.test as a tool that performs only part of the work.

Consider this approach:

- QuickCheck reads the definition of the properties.

- It generates the random test data.

- It writes a python file that contains tests suitable for py.test to run.

- It invokes py.test to actually run the tests.  Use a py.test plugin to report test statuses in a form that QuickCheck can easily read.  (I can show you an example if you need help with this.)

- QuickCheck reads the report file to find out how the tests worked.  It then iterates as you described in your original email.

As you described it, QuickCheck has a fundamentally different view of tests than py.test does.  Instead of trying to force the QuickCheck model into the py.test structure, this alternative uses a control program to implement the main structure of QuickCheck.  That control program uses py.test as a subroutine to perform the part that py.test is really good at.

You might import pytest and call functions in it, or you might do something as simple as os.system("py.test tmp.py")

Mark S.




More information about the Pytest-dev mailing list