Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

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.

Files for hypothesis-csv, version 0.3.4
Filename, size File type Python version Upload date Hashes
Filename, size hypothesis-csv-0.3.4.tar.gz (17.2 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page