Skip to main content

Pyst - Pytest System-Test Plugin

Project description

Pyst - Pytest System-Test Plugin

Note: This plugin is the state experimental / techdemo !

This plugin should ease system-testing with Pytest. To achieve this it provides a simple interface to manage processes in the operating system like starting them, running background processes and evaluating the output.

This is especially useful to prepare the system for a test (e.g. start background prcesses, databases, servers, ...) and then run the programm under test in a blackbox-manner.

Features should be (intended, partly unfinished):

  • DONE: Starting, stopping and managing processes in the OS
  • DONE: Pysys like interface to run systemtests
    • Especially startProcess and assertGrep
  • DONE: Logs all outputs to files and can later on run assertions on that outputs
  • Should work:
    • DONE: Start and stop processes with and without sudo
    • Prepare configuration files for executables
  • DONE: Simple user fixtures
  • Provides envioronment fixtures / group fixtures / environments (terminology depends on the framework you are used to).
  • Multistage environments fixtures
    • Supports you to write your own fixures

So far, this will only un on unix-like systems.

Prepare

python3 -m venv env-plugin
source env-plugin/bin/activate
pip install pytest
pip install pytest-mock
pip install restapi_echo_server
or
pip install -r requirements.txt

Usage

Have a look at tests/test_use_cases.py it contains some exemplary use-cases. We use an echo-server and curl to be near to real use cases. More will be added soon.

Example

Some other use cases are here https://github.com/abelikt/pytest_system_test_plugin_test

import re
import pytest

def test_use_rolldice(process_factory):
    """This test installs a package via the package management, uses
    it and removes it again.
    """

    # make sure it is not installed
    call = process_factory(["whereis", "rolldice"])
    call.run()
    assert call.get_stdout() == "rolldice:"
    assert call.returncode == 0

    # Install package
    install = process_factory(["sudo", "apt-get", "install", "-y", "-q", "rolldice"])
    install.run()
    assert install.returncode == 0

    # Call and check output against a regex
    call = process_factory(["rolldice", "6"])
    call.run()
    print(call.get_stdout())
    print(call.get_stderr())

    # match a single digit
    assert re.match(r"^\d$", call.get_stdout()) is not None
    assert call.returncode == 0

    # deinstall it
    deinstall = process_factory(["sudo", "apt-get", "remove", "-y", "-q", "rolldice"])
    deinstall.run()
    assert install.returncode == 0

Test

pip install .; python -m pytest -s --log-cli-level=INFO
tox
tox -e {lint, linttest}

Measure test execution

pip install .; python -m pytest -s --log-cli-level=INFO --junitxml=junit.xml
xmllint junit.xml --format > junitf.xml

Links

This repo:

Some exemplary tests:

Pytest test-framework:

PySys test-framework:

Similar plugins:

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_system_test_plugin-0.0.2.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file pytest_system_test_plugin-0.0.2.tar.gz.

File metadata

  • Download URL: pytest_system_test_plugin-0.0.2.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.2

File hashes

Hashes for pytest_system_test_plugin-0.0.2.tar.gz
Algorithm Hash digest
SHA256 aad7b713af3f87776f01d0d9e210e964d626aba2f2b14017e044afb3cbefc6ba
MD5 9fd9370579bc7912c8cc79c1da39cf7d
BLAKE2b-256 0ba168db43f2744aa275d59c8b3e0550b7214ec8c8590772dddd8e0cec773278

See more details on using hashes here.

File details

Details for the file pytest_system_test_plugin-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: pytest_system_test_plugin-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 7.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.2

File hashes

Hashes for pytest_system_test_plugin-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d607d91016b329a2bacb242eaaa54e534255b201902e9230a07085406a8383d5
MD5 3599e69aad8d77c7e24cdbcbabb6a0ca
BLAKE2b-256 bda48beebb347be274129783ca5b1a15f4620dde0edb5cc1e1e21d798fdefa50

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