Welcome, guest | Sign In | My Account | Store | Cart

Notice! PyPM is being replaced with the ActiveState Platform, which enhances PyPM’s build and deploy capabilities. Create your free Platform account to download ActivePython or customize Python with the packages you require and get automatic updates.

Download
ActivePython
INSTALL>
pypm install pytest-quickcheck

How to install pytest-quickcheck

  1. Download and install ActivePython
  2. Open Command Prompt
  3. Type pypm install pytest-quickcheck
 Python 2.7Python 3.2Python 3.3
Windows (32-bit)
0.6
0.7Never BuiltWhy not?
0.6 Available View build log
0.6
0.7Never BuiltWhy not?
0.6 Available View build log
Windows (64-bit)
0.6
0.7Never BuiltWhy not?
0.6 Available View build log
0.6
0.7Never BuiltWhy not?
0.6 Available View build log
Mac OS X (10.5+)
0.6
0.7Never BuiltWhy not?
0.6 Available View build log
0.6
0.7Never BuiltWhy not?
0.6 Available View build log
Linux (32-bit)
0.6
0.7Never BuiltWhy not?
0.6 Available View build log
0.6
0.7Never BuiltWhy not?
0.6 Available View build log
Linux (64-bit)
0.6
0.7Never BuiltWhy not?
0.6 Available View build log
0.6
0.7Never BuiltWhy not?
0.6 Available View build log
0.7 Available View build log
 
License
Apache License 2.0
Dependencies
Lastest release
version 0.7 on Sep 20th, 2013

Requirements

  • Python 2.6 or 3.x and later

Features

  • Provide pytest.mark.randomize function for generating random test data
Installation
$ easy_install pytest-quickcheck # or
$ pip install pytest-quickcheck
Quick Start

Just pass the signature of function to randomize marker. The signature is represented a tuple consist of argument name and its type.

@pytest.mark.randomize(i1=int, i2=int, ncalls=1)
def test_generate_ints(i1, i2):
    pass

More complex data structure:

@pytest.mark.randomize(
    d1={'x': int, 'y': [str, (int, int)], 'z': {'x': str}}
)
def test_generate_dict(d1):
    pass

The randomize marker is able to use with parametrize marker.

@pytest.mark.parametrize("prime", [2, 3, 5])
@pytest.mark.randomize(i1=int, f1=float, ncalls=1)
def test_gen_parametrize_with_randomize_int_float(prime, i1, f1):
    pass

Using command line option --randomize restricts only the randomize test.

$ py.test -v --randomize test_option.py
==========================================================================================
test session starts
==========================================================================================
test_option.py:5: test_normal SKIPPED
test_option.py:8: test_generate_ints[74-22] PASSED
Usage

There some options for each data type:

$ py.test --markers
@pytest.mark.randomize((argname, type), **options): mark the test function with
random data generating any data type.
  There are options for each data type: (see doc for details)
  int: ['min_num', 'max_num']
  float: ['min_num', 'max_num', 'positive']
  str: ['encoding', 'fixed_length', 'max_length', 'str_attrs']
  • common option

    ncalls: set the number of calls. Defaults to 3. (e.g. ncalls=5)
    choices: choose from given sequence. (e.g. choices=[3, 5, 7])
  • int

    min_num: lower limit for generating integer number. (e.g. min_num=0)
    max_num: upper limit for generating integer number. (e.g. max_num=10)
  • float

    min_num: lower limit for generating real number. (e.g. min_num=0.0)
    max_num: upper limit for generating real number. (e.g. max_num=1.0)
    positive: generate only positive real number if set to True. Defaults to False. (e.g. positive=True)
  • str

    encoding: generate unicode string encoded given character code. (e.g. encoding="utf-8") # for Python 2.x only
    fixed_length: generate fixed length string. (e.g. fixed_length=8)
    max_length: generate the string less than or equal to max length (e.g. max_length=32)
    str_attrs: generate the string in given letters. set a tuple consist of attribute names in the string module. (e.g. str_attrs=("digits", "punctuation")

Probably, tests/test_plugin_basic.py is useful for learning how to use these options.

Python 3

For Python 3, the signature of function is given as function annotation.

@pytest.mark.randomize(min_num=0, max_num=2, ncalls=5)
def test_generate_int_anns(i1: int):
    pass

Mixed representation is also OK, but it might not be useful.

@pytest.mark.randomize(i1=int, fixed_length=8)
def test_generate_arg_anns_mixed(i1, s1: str):
    pass

See also: PEP 3107 -- Function Annotations

Backward Compatibility

Under 0.6 version, types were specified by strings containing the name of the type. It's still supported if you like.

@pytest.mark.randomize(("i1", "int"), ("i2", "int"), ncalls=1)
ChangeLog

0.7 (2012-10-20)

  • the types in the arguments are specified by the types themselves (#1)

0.6 (2012-03-29)

  • add generating data feature from function annotation

0.5 (2012-03-18)

  • first release

Subscribe to package updates

Last updated Sep 20th, 2013

Download Stats

Last month:1

What does the lock icon mean?

Builds marked with a lock icon are only available via PyPM to users with a current ActivePython Business Edition subscription.

Need custom builds or support?

ActivePython Enterprise Edition guarantees priority access to technical support, indemnification, expert consulting and quality-assured language builds.

Plan on re-distributing ActivePython?

Get re-distribution rights and eliminate legal risks with ActivePython OEM Edition.