No project description provided
Project description
pytest-exasol-extension Plugin
The pytest-exasol-extension
plugin provides pytest fixtures for preparing a database for the extension tests.
The fixtures are backend agnostic. They run for the selected backends
(see the documentation for the pytest-exasol-backend
plugin).
Installation
The pytest-exasol-extension plugin can be installed using pip:
pip install pytest-exasol-extension
Usage in Tests
Below is an example of a test that requires a database connection with an open test schema.
import pytest
@pytest.fixture(scope="session")
def db_schema_name() -> str:
"""Let's override a randomly generated db schema for the test, giving it a meaningful name."""
return 'MY_TEST_SCHEMA'
def test_something(pyexasol_connection):
...
Next, is an example of a test that needs to store a bucket-fs connection object in the database.
def test_something_else(bucketfs_connection_factory):
bucketfs_connection_factory('my_connection_name,' 'some_path/in_the_bucket')
...
The following fixtures are used to test various deployment scenarios where the connection parameters
for the Database and the BucketFS are supplied in a command line. The first two fixtures provide dictionaries
of standard cli parameters (StdParams
) defined in the exasol-python-extension-common
.
`database_std_params` - the Database connection parameters.
`bucketfs_std_params` - the BucketFs connection parameters.
The next two fixtures - database_cli_args
and bucketfs_cli_args
- give the same parameters as the previous two
but in the form of command line arguments. They are helpful for testing the CLI directly, for example using the
click.CliRunner as in the samples below. There is also a fixture - cli_args
- that combines these two argument
strings.
import click
from click.testing import CliRunner
from exasol.python_extension_common.cli.std_options import (StdParams, StdTags, select_std_options)
from exasol.pytest_backend import (BACKEND_ONPREM, BACKEND_SAAS)
def test_db_connection_cli(backend, database_cli_args):
if backend == BACKEND_ONPREM:
tags = StdTags.DB | StdTags.ONPREM
elif backend == BACKEND_SAAS:
tags = StdTags.DB | StdTags.SAAS
else:
ValueError(f'Unknown backend {backend}')
def test_something_with_db(**kwargs):
pass
opts = select_std_options(tags)
cmd = click.Command('whatever', params=opts, callback=test_something_with_db)
runner = CliRunner()
runner.invoke(cmd, args=database_cli_args, catch_exceptions=False, standalone_mode=False)
def test_bucketfs_connection_cli(backend, bucketfs_cli_args):
if backend == BACKEND_ONPREM:
tags = StdTags.BFS | StdTags.ONPREM
elif backend == BACKEND_SAAS:
tags = StdTags.BFS | StdTags.SAAS
else:
ValueError(f'Unknown backend {backend}')
def test_something_with_bucketfs(**kwargs):
pass
opts = select_std_options(tags)
cmd = click.Command('whatever', params=opts, callback=test_something_with_bucketfs)
runner = CliRunner()
runner.invoke(cmd, args=bucketfs_cli_args, catch_exceptions=False, standalone_mode=False)
Note, that by default the tests will run twice - once for each backend.
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 pytest_exasol_extension-0.2.0.tar.gz
.
File metadata
- Download URL: pytest_exasol_extension-0.2.0.tar.gz
- Upload date:
- Size: 4.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.15 Linux/5.15.0-1073-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f4bb12e5ad6a05056b1a34cdd728671a9f29abdbaa33a289ae78123c57b1fce |
|
MD5 | 1a5f87b9e6afb0fe7a3fb42a43be5d4b |
|
BLAKE2b-256 | ba2f2d4d60c5b62e869d65c1a9915bdacf36f367c960b844d5fe143cdd5747d4 |
File details
Details for the file pytest_exasol_extension-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: pytest_exasol_extension-0.2.0-py3-none-any.whl
- Upload date:
- Size: 5.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.15 Linux/5.15.0-1073-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 41a358d83a4fece2035c9304253fb4c73da5ec0d25c9ff5312cb728f6fb65c7c |
|
MD5 | 845d6d2d48efda9848c091b4d6ba8b4b |
|
BLAKE2b-256 | 8e961c7c62c43b8fad5de5d7995736146d64c4c0cfe89819d36af7b0fac297d7 |