Utilities for writing tests for Quera SQL judge.
Project description
sql-judge-utils
Utilities for writing Python unit tests for version 2 of the Quera SQL judge.
Installation
pip install sql-judge-utils # or git+https://github.com/QueraTeam/sql-judge-utils
Usage
Import one of database classes:
# PostgreSQL:
from sql_judge_utils.postgresql import PostgresqlDatabase as Database
# MySQL:
from sql_judge_utils.mysql import MysqlDatabase as Database
Define database instances:
db1 = Database("db1")
db2 = Database("db2")
Optional arguments:
Argument | PostgreSQL default | MySQL default |
---|---|---|
host |
"postgresql" |
"mysql" |
port |
5432 |
3306 |
username |
"postgres" |
"root" |
password |
None |
None |
WARNING: Don't override the default values if you're writing tests for Quera SQL judge.
Create database:
db1.create()
Drop database:
db1.drop()
Init data (run SQL command without fetching results) with SQL string or SQL file path:
db1.init(sql_string)
# or
db1.initf(sql_file_path)
Run query and fetch the results:
col_names, records = db1.run_query(sql_string)
Compare two result of run_query:
status, message = Database.compare_query_result(col_names_1, records_1, col_names_2, records_2)
Compare two database instances:
status, message = db1.is_equal(db2)
Compare two database instances on a table:
status, message = db1.is_equal_on_table(db2, table_name)
Submission parser
Use the parser to extract queries from a submission file:
from sql_judge_utils.parser import get_queries, get_query
submission_file_path = 'path/to/submission.sql'
queries = get_queries(submission_file_path)
# or
submission_file_path = 'path/to/submission.sql'
query_number = 2
query = get_query(submission_file_path, query_number)
Development
Install Hatch and pre-commit hooks:
pipx install hatch
pipx install pre-commit
pre-commit install
Before running the tests, start a MySQL and a PostgreSQL instance:
docker run --name sql-postgres -e POSTGRES_PASSWORD=password -p "127.0.0.1:15432:5432" -d postgres postgres -c log_statement=all
docker run --name sql-mysql -e MYSQL_ROOT_PASSWORD=password -p "127.0.0.1:13306:3306" -d mysql
Run the tests and stop the database instances:
hatch test
docker stop sql-postgres sql-mysql
docker rm sql-postgres sql-mysql
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 sql_judge_utils-0.1.9.tar.gz
.
File metadata
- Download URL: sql_judge_utils-0.1.9.tar.gz
- Upload date:
- Size: 4.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.27.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6071829a6052a76c44b1d0cf8e255f914f95e7b0523d1d421c587453f781eb3a |
|
MD5 | fe8d83b01418f0d130244d696bd88f44 |
|
BLAKE2b-256 | 3a9dbd814972bb481dc110642a3b665370eaee6ba3c95fdbd71d4e8d70a46028 |
File details
Details for the file sql_judge_utils-0.1.9-py2.py3-none-any.whl
.
File metadata
- Download URL: sql_judge_utils-0.1.9-py2.py3-none-any.whl
- Upload date:
- Size: 6.2 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.27.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | db8e47c191106b4f6cad038c67295252d6118042a66d05d57097d0b901ee57a2 |
|
MD5 | ab9c3eea9a1bbdb647e045e23bbdf1d7 |
|
BLAKE2b-256 | b8b098ccf331c291ddacf9265cc69717465410398781b651fc3b27235e0b53a8 |