Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest_exasol_extension-0.2.0.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

pytest_exasol_extension-0.2.0-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

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

Hashes for pytest_exasol_extension-0.2.0.tar.gz
Algorithm Hash digest
SHA256 1f4bb12e5ad6a05056b1a34cdd728671a9f29abdbaa33a289ae78123c57b1fce
MD5 1a5f87b9e6afb0fe7a3fb42a43be5d4b
BLAKE2b-256 ba2f2d4d60c5b62e869d65c1a9915bdacf36f367c960b844d5fe143cdd5747d4

See more details on using hashes here.

File details

Details for the file pytest_exasol_extension-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pytest_exasol_extension-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 41a358d83a4fece2035c9304253fb4c73da5ec0d25c9ff5312cb728f6fb65c7c
MD5 845d6d2d48efda9848c091b4d6ba8b4b
BLAKE2b-256 8e961c7c62c43b8fad5de5d7995736146d64c4c0cfe89819d36af7b0fac297d7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page