Minimum test flamework for sql
Project description
Test Driven SQL
Tdsql is a minimum test flamework for sql. You can replace any part of sql and check if the result is as expected. You can define test cases as yaml file.
Install
Currently, only bigquery is supported.
pip install 'tdsql[bigquery]'
Authentication
Run either of these commands.
gcloud auth application-default login
# If you want to use service account
# export GOOGLE_APPLICATION_CREDENTIALS=/path/to/keyfile.json
Quick start
Save these files in your working directory.
# ./tdsql.yaml
database: bigquery
tests:
- filepath: ./hello-world.sql
replace:
data: |
SELECT * FROM UNNEST([
STRUCT('2020-01-01' AS dt, 100 AS id),
STRUCT('2020-01-01', 100),
STRUCT('2020-01-01', 200)
])
master: |
FROM (
SELECT 100 AS id, 1 AS category
)
expected: |
SELECT * FROM UNNEST([
STRUCT('2020-01-01' AS dt, 1 AS category, 2 AS cnt),
STRUCT('2020-01-01', NULL, 1)
])
-- ./hello-world.sql
WITH data AS (
-- tdsql-start: data
SELECT dt, id
FROM `data_table`
-- tdsql-end: data
), master AS (
SELECT id, category
FROM `master_table` -- tdsql-line: master
)
SELECT
dt,
category,
COUNT(*) AS cnt
FROM data INNER JOIN master USING(id)
GROUP BY 1, 2
Then, run this command. You'll see an error message.
tdsql
Fix hello-world.sql
and run tdsql
again,
you won't see any error message this time.
- FROM data INNER JOIN master USING(id)
+ FROM data LEFT JOIN master USING(id)
Quite simple, isn't it?
Examples
Heavily documented sample codes are here.
Feedback
If you find any bugs, please feel free to create an issue.
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
Built Distribution
File details
Details for the file tdsql-0.0.5.tar.gz
.
File metadata
- Download URL: tdsql-0.0.5.tar.gz
- Upload date:
- Size: 8.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.10.4 Linux/5.13.0-1023-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d198f751323d244d7e82bdc5cc861dee0453da13e14082bc78ba4ed478c8ec6 |
|
MD5 | 15bf9e73c01afc573d6fa02822694459 |
|
BLAKE2b-256 | 922d6a576e3aa8744665311fd095b8e21482883a4dc28ba4a337be362dd30d8e |
File details
Details for the file tdsql-0.0.5-py3-none-any.whl
.
File metadata
- Download URL: tdsql-0.0.5-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.10.4 Linux/5.13.0-1023-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 33c66dcdc49733111dd1bf8a52711a87da74bc36e33c005f2b7bedafe452734a |
|
MD5 | 5b63a27ca676159c1fb7f061bf2c7966 |
|
BLAKE2b-256 | 3dc96afd86441961b41c49e6a9e41b43acbddaeb201e7ba21ba18d9aad153d5c |