Skip to main content

Pytest plugin for Bigquery SQL

pytest-sql-bigquery is pytest-plugin which provides a sql-unitest-framework for BigQuery. This plugin adopts an end-to-end approch that runnning SQL test on SQL engines.

Yet anthoer approch to tst SQL code

See following SQL codes:

with dataset as (
    select 1
    union all select 2
)
, __check_sample as (
    select 'test' as label, count(1) as actual, 2 as expected from dataset 
)

select * from dataset

This code is minimal example including test case. __check_sample is a test case which makes sure the dataset view has just 2 record.

Our idea is very simple: "Verify SQL code by SQL-self."

This plugin generate SQL test codes from SQL and executed them on SQL-engine such as BigQuery.

The advantages of this approch are

  • SQL codes owns specification itself
  • Provide portability of logic and its test codes.
  • Free to hard-mocking database system

Get Started

Requirements

  • Python >= 3.7

  • sqlparse

  • google-cloud-bigquery (For BigQuery integration)

  • BigQuery (Google Cloud Project)

Install

pip install pytest-bigquery-sql

Then, set up confidist.py for pytest settings.

import pytest

from pytest_sql_bigquery.integrations.pytest import SQLReaderForChecking

class ChainPytestFile(pytest.File):

    def __init__(self, path, parent, chains, **kwargs):
        super().__init__(path, parent, **kwargs)
        self.chains = chains

    def collect(self):
        for interpreter in self.chains:
            yield from interpreter.collect()

def pytest_collect_file(parent, path):
    if path.ext == ".sql":
        return ChainPytestFile(
            path, parent,
            [
                SQLReaderForChecking(path, parent),
            ])

Run test for examples/sql directory

pytest run -vv examples/sql 

Release files for pytest-sql-bigquery 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytest-sql-bigquery 0.0.3
File Size Uploaded
pytest_sql_bigquery-0.0.3.tar.gz 5.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytest-sql-bigquery 0.0.3
File Interpreter ABI Platform
pytest_sql_bigquery-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 10.3 kB

Release files / pytest_sql_bigquery-0.0.3.tar.gz

Download URL pytest_sql_bigquery-0.0.3.tar.gz
Size 5.0 kB
Tags Source
SHA-256 checksum
How to use checksums
37a7e99c1d00a70dd9793144c4892483031a2c5d0946630f52dee5b8faa645e2
BLAKE2b-256 checksum
How to use checksums
5a8e12961d1e8927c367944a612b0bbaac510f632b58b86501afc46057f05ece
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.0.0 CPython/3.7.5 Darwin/18.7.0

Release files / pytest_sql_bigquery-0.0.3-py3-none-any.whl

Download URL pytest_sql_bigquery-0.0.3-py3-none-any.whl
Size 5.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f65d4dfc0f1582625d3e8a95113e899287f081cd354b4a430ffa6f611f224023
BLAKE2b-256 checksum
How to use checksums
6d6fb30630efda258f0468e47c5dda275309ae38339be1f8b5527851596b880a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.0.0 CPython/3.7.5 Darwin/18.7.0

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page