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.1.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file pytest_exasol_extension-0.2.1.tar.gz.

File metadata

  • Download URL: pytest_exasol_extension-0.2.1.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.1.tar.gz
Algorithm Hash digest
SHA256 b628cb8f5505a20ca39e9828afa2a7f50bfbbfc55b9203b12c453527e9718ab3
MD5 540464dcaf180f3310c83708f9419d2a
BLAKE2b-256 b6bd6ba1b346c85348e7375f4715b0620742377d86bf8bff374ba3b8d45ff366

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pytest_exasol_extension-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9ec0611872c865a1f97e2cbaedbd194919bc7a38cf91d228ab2c94d120abb6d0
MD5 89087633b12c48214ff7938d1aa0a9c9
BLAKE2b-256 6d064e38ef8c60c96169774a2d31f80a650a63f91a1a7d7bf2682577daf8d115

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