Metadata-Version: 1.0
Name: pytest-quickcheck
Version: 0.6
Summary: pytest plugin to generate random data inspired by QuickCheck
Home-page: http://bitbucket.org/t2y/pytest-quickcheck/
Author: Tetsuya Morimoto
Author-email: tetsuya dot morimoto at gmail dot com
License: Apache License 2.0
Description: 
        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.
        
        .. _string module: http://docs.python.org/library/string.html
        
        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`_
        
        .. _PEP 3107 -- Function Annotations: http://www.python.org/dev/peps/pep-3107/
        
        ChangeLog
        =========
        
        0.6 (2012-03-29)
        ----------------
        * add generating data feature from function annotation
        
        0.5 (2012-03-18)
        ----------------
        * first release
        
Keywords: test,pytest,quickcheck
Platform: linux
Platform: osx
Platform: unix
Platform: win32
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Utilities
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Software Development :: Quality Assurance
