Lightweight assertions inspired by the great-expectations library
Project description
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.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.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 |
|
|
assertExpectColumnValuesToBeBetween |
|
|
assertExpectColumnValuesToMatchRegex |
|
|
assertExpectColumnValuesToBeInSet |
|
|
assertExpectColumnValuesToBeOfType |
|
|
assertExpectTableColumnsToMatchOrderedList |
|
|
assertExpectTableColumnsToMatchSet |
|
|
assertExpectDateRangeToBeMoreThan |
|
|
assertExpectDateRangeToBeLessThan |
|
|
assertExpectDateRangeToBeBetween |
|
|
assertExpectColumnMeanToBeBetween |
|
|
assertExpectColumnValueCountsPercentToBeBetween |
|
|
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file great-assertions-0.0.49.tar.gz
.
File metadata
- Download URL: great-assertions-0.0.49.tar.gz
- Upload date:
- Size: 16.1 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 30f3a79ef688ccb3fb213972bcb9cd653d59ab871d2d0e74e4776ef4adc022e3 |
|
MD5 | 79e4b9fe30452974c290540fe4fbfd00 |
|
BLAKE2b-256 | 595f014e537aa4e2e979aa6d1608bf60dea6fc62fb39da56cf4c04c4e4b8bc7a |
File details
Details for the file great_assertions-0.0.49-py3-none-any.whl
.
File metadata
- Download URL: great_assertions-0.0.49-py3-none-any.whl
- Upload date:
- Size: 12.4 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d778814d25988fce0f779aeab8ce0a49b583b6b2439bde9b993d9a1b7150acb |
|
MD5 | 7f06710e168ad770d15cc74c0a52bf4d |
|
BLAKE2b-256 | aba5fa7478cae8767cbe00b4c16163e896816630b9dd3331239306dcd7115d1f |