Skip to main content

CSV extension for the Hypothesis framework

Project description

hypothesis-csv is an extension to the hypothesis framework. The goal of this framework is to offer a flexible tool to perform generative-testing/property-based testing for software that accepts CSV files as an input.

Description

hypothesis-csv is designed with two main use cases in mind:

  • test software that accepts a wide spectrum of CSV formats and doesn’t make assumptions on the content (i.e. CSV parsers)

  • test software that accepts very specific CSV formats and makes assumption on the content, types and header fields.

It provides two strategies, data_rows and csv, to pursue this goal, both contained in the strategies module. Please refer to their documentation and the examples for more details.

Examples

Generate arbitrary, non-empty CSV

from hypothesis_csv.strategies import csv
@given(csv=csv())
def test_my_csv_parse(csv):
    parsed_csv=my_csv_parser(csv)
    assert ...

Generate CSV of a given size (5 columns x 20 rows)

from hypothesis_csv.strategies import csv
@given(csv=csv(lines=20,header=5))
def test_my_csv_parse(csv):
    parsed_csv=my_csv_parser(csv)
    assert parsed_csv.num_columns == 5
    assert parsed_csv.num_rows == 20

Generate CSV with a header

from hypothesis_csv.strategies import csv
@given(csv=csv(header=["timestamp","val_1","val_2"]))
def test_my_csv_parse(csv):
    parsed_csv=my_csv_parser(csv)
    assert parsed_csv.num_columns == 3

Generate CSV with columns of a given type

from hypothesis_csv.strategies import csv
@given(csv=csv(columns=[text(),int(),float()]))
def test_my_csv_parse(csv):
    parsed_csv=my_csv_parser(csv)
    assert parsed_csv.num_columns == 3

Generate CSV with a given dialect

from hypothesis_csv.strategies import csv
@given(csv=csv(columns=[text(),int(),float()], dialect="excel-tab"))
def test_my_csv_parse(csv):
    ...

Generate CSV with drawns dialects

from hypothesis_csv.strategies import csv
@given(csv=csv(columns=[text(),int(),float()], dialect=None))
def test_my_csv_parse(csv):
    ...

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-csv-0.3.4.tar.gz (17.2 kB view details)

Uploaded Source

File details

Details for the file hypothesis-csv-0.3.4.tar.gz.

File metadata

  • Download URL: hypothesis-csv-0.3.4.tar.gz
  • Upload date:
  • Size: 17.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.7

File hashes

Hashes for hypothesis-csv-0.3.4.tar.gz
Algorithm Hash digest
SHA256 8716d10a93a22edce2c78544624056b412bd6083bde9e5a1166a02be57d55e6e
MD5 d066b5df1329719442696247a763fbe2
BLAKE2b-256 af4bb97ce73a2d0f638d8af8e11631bfd0aa6bfe3e4057b49f94a198f5e1216b

See more details on using hashes here.

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