Skip to main content

``hypothesis`` strategies for generating ``SQLAlchemy`` objects.

Project description

hypothesis strategies for SQLAlchemy

In what follows python3 is an alias for python3.5 or any later version (python3.6 and so on).

Installation

Install the latest pip & setuptools packages versions

python3 -m pip install --upgrade pip setuptools

Release

Download and install the latest stable version from PyPI repository

python3 -m pip install --upgrade hypothesis_sqlalchemy

Developer

Download and install the latest version from GitHub repository

git clone https://github.com/lycantropos/hypothesis_sqlalchemy.git
cd hypothesis_sqlalchemy
python3 setup.py install

Usage

Let's take a look at what can be generated and how.

Tables

Suppose we have metadata

>>> from sqlalchemy.schema import MetaData 
>>> metadata = MetaData()

We can write strategy that produces tables associated with given metadata

>>> from hypothesis import strategies
>>> from hypothesis_sqlalchemy import tables
>>> tables_strategy = tables.factory(metadatas=strategies.just(metadata))
>>> table = tables_strategy.example()
>>> table.name
kahtvedrpis
>>> table.columns
['kahtvedrpis.wkeggvqvekovyornpixczunhlslpirtqbnpwdppjvccgvy', 
 'kahtvedrpis.olyrajvsfxbgxzmxheaxdwzgcaj']

Records

Suppose we have table

>>> from sqlalchemy.schema import (Column,
                                   MetaData,
                                   Table)
>>> from sqlalchemy.sql.sqltypes import (Integer,
                                         String)
>>> metadata = MetaData()
>>> user_table = Table('user', metadata,
                       Column('user_id', Integer,
                              primary_key=True),
                       Column('user_name', String(16),
                              nullable=False),
                       Column('email_address', String(60)),
                       Column('password', String(20),
                              nullable=False))

We can write strategy that

  • produces single records (as tuples)
    >>> from hypothesis_sqlalchemy import tables
    >>> records = tables.records.factory(user_table)
    >>> records.example()
    (1022, '>5', None, '+b8a*,\x04&3<')
    
  • produces records lists (with configurable list size bounds)
    >>> from hypothesis_sqlalchemy import tables
    >>> records_lists = tables.records.lists_factory(user_table,
                                                     min_size=2,
                                                     max_size=5)
    >>> records_lists.example()
    [(11310, '', 'P\x02LT/Q\\', ''),
     (16747, '\x08*Z#j0 ;', None, ''),
     (29983, '', None, ''), 
     (7597, '', '}\x16', '<:+n$W')]
    

Running tests

Plain

python3 setup.py test

Inside Docker container

docker-compose up

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hypothesis_sqlalchemy-0.0.3.tar.gz (7.7 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page