Skip to main content

Lightweight assertions inspired by the great-expectations library

Project description

serialbandicoot flake8 Lint codecov CodeQL

This library is inspired by the Great Expectations library. The library has made the various expectations found in Great Expectations available when using the inbuilt python unittest assertions.

For example if you wanted to use expect_column_values_to_be_between then you can access assertExpectColumnValuesToBeBetween.

Install

pip install great-assertions

Code example Pandas

from great_assertions import GreatAssertions
import pandas as pd

class GreatAssertionTests(GreatAssertions):
    def test_expect_table_row_count_to_equal(self):
        df = pd.DataFrame({"col_1": [100, 200, 300], "col_2": [10, 20, 30]})
        self.assertExpectTableRowCountToEqual(df, 3)

Code example PySpark

from great_assertions import GreatAssertions
from pyspark.sql import SparkSession

class GreatAssertionTests(GreatAssertions):

    def setUp(self):
        self.spark = SparkSession.builder.getOrCreate()

    def test_expect_table_row_count_to_equal(self):
        df = self.spark.createDataFrame(
            [
                {"col_1": 100, "col_2": 10},
                {"col_1": 200, "col_2": 20},
                {"col_1": 300, "col_2": 30},
            ]
        )
        self.assertExpectTableRowCountToEqual(df, 3)

List of available assertions

Pandas

PySpark

assertExpectTableRowCountToEqual

white_check_mark:

white_check_mark:

assertExpectColumnValuesToBeBetween

white_check_mark:

white_check_mark:

assertExpectColumnValuesToMatchRegex

white_check_mark:

white_check_mark:

assertExpectColumnValuesToBeInSet

white_check_mark:

white_check_mark:

assertExpectColumnValuesToBeOfType

white_check_mark:

white_check_mark:

assertExpectTableColumnsToMatchOrderedList

white_check_mark:

white_check_mark:

assertExpectTableColumnsToMatchSet

white_check_mark:

white_check_mark:

assertExpectDateRangeToBeMoreThan

white_check_mark:

white_check_mark:

assertExpectDateRangeToBeLessThan

white_check_mark:

white_check_mark:

assertExpectDateRangeToBeBetween

white_check_mark:

white_check_mark:

assertExpectColumnMeanToBeBetween

white_check_mark:

white_check_mark:

assertExpectColumnValueCountsPercentToBeBetween

white_check_mark:

white_check_mark:

Assertion Descriptions

For a description of the assertions see Assertion Definitions

Running the tests

Executing the tests still require unittest, the following options have been tested with the examples provided.

Option 1

import unittest
suite = unittest.TestLoader().loadTestsFromTestCase(GreatAssertionTests)
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)

Options 2

if __name__ == '__main__':
    unittest.main()

Notes

If you get an arrows function warning when running in Databricks, this will happen becuase a toPandas() method is called. The plan is to remove pandas conversion for Spark at a later date as use native PySpark code. For make sure the datasets are not too big, to cause the driver to crash.

Development

To create a development environment, create a virtualenv and make a development installation:

::

$ virtualenv ve $ source ve/bin/activation

To run tests, just use pytest

(ve) $ pytest

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

great-assertions-0.0.35.tar.gz (20.8 kB view details)

Uploaded Source

Built Distribution

great_assertions-0.0.35-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file great-assertions-0.0.35.tar.gz.

File metadata

  • Download URL: great-assertions-0.0.35.tar.gz
  • Upload date:
  • Size: 20.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.6

File hashes

Hashes for great-assertions-0.0.35.tar.gz
Algorithm Hash digest
SHA256 bc6da5e186033b39e2b66e1177e431d9d97d532c2a6189f6a4af7b61c1d0c8b8
MD5 d90a45b54c0ae4bf1703ea2509b84b3c
BLAKE2b-256 5d019b28eece6c7e454a2f08a3c2f46648914f085e8f5dc7b7cdf9079cd96211

See more details on using hashes here.

File details

Details for the file great_assertions-0.0.35-py3-none-any.whl.

File metadata

  • Download URL: great_assertions-0.0.35-py3-none-any.whl
  • Upload date:
  • Size: 11.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.6

File hashes

Hashes for great_assertions-0.0.35-py3-none-any.whl
Algorithm Hash digest
SHA256 45bb9bdc104f0332e330ef6bc5a1718d3a00886493c643a8f2f5e772f82ce9ce
MD5 4db000e393e16c7c5bae740e3ec3a9a0
BLAKE2b-256 8a8e1793f32187c472dfbcca940a2a505d988b4122dba53e82c04f7eeddeecea

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