Skip to main content

A pytest plugin that enables tmux driven tests

Project description

pytest-tmux

PyPI version

Python versions

A pytest plugin that enables tmux driven tests

This plugin is intend to help users who want to test interrative cli.

When using tmux fixture it basically :

  • creates a tmux server (socket created in pytest tmpdir)
  • creates a session automatically
  • attach to the window automatically
  • attach to the pane automatically

Warnings

Until a stable release, it is greatly encouraged to specify a strict version if you use this tool in your CI since it is in its early development and could be greatly changed between version.

Docs

https://pytest-tmux.readthedocs.io/

Features

  • Enable tmux driven tests
  • Enable screen assertion with retry
  • Enable row assertion with retry
  • Allow to debug tests interactively

Requirements

  • python >= 3.7
  • pytest
  • tmux

Installation

You can install "pytest-tmux" via pip from PyPI:

$ pip install pytest-tmux

Configuration capabilities

Configuration could be set on different level (in order of precedence):

  • Server
    • by overriding tmux_server_config (scope='session') fixture
    • env var
    • cli args (see --tmux-* switch with pytest --help)
  • Session
    • by overriding tmux_session_config fixture
    • at the test level with tmux_session_cfg marker
    • dynamically inside test with tmux.config.session
    • env var
    • cli args (see --tmux-* switch with pytest --help)
  • Assertion
    • by overriding tmux_assertion_config fixture
    • at the test level with tmux_assertion_cfg marker
    • dynamically inside test with tmux.config.session
    • when calling tmux.screen() / tmux.row() with timeout / delay argument
    • env var
    • cli args (see --tmux-* switch with pytest --help)

Usage

Basic example

import pytest
from inspect import cleandoc

def test_assert(tmux):
    # Set some options before session / windows is started
    tmux.config.session.window_command='env -i PS1="$ " TERM="xterm-256color" /usr/bin/env bash --norc --noprofile'
    assert tmux.screen() == '$'
    tmux.send_keys(r'printf "  Hello World  .\n\n"')
    expected=r"""
    $ printf "  Hello World  .\n\n"
      Hello World  .

    $
    """
    assert tmux.screen() == cleandoc(expected)

License

Distributed under the terms of the MIT license, "pytest-tmux" is free and open source software

Issues

If you encounter any problems, please file an issue along with a detailed description.

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_tmux-0.0.4.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

pytest_tmux-0.0.4-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file pytest_tmux-0.0.4.tar.gz.

File metadata

  • Download URL: pytest_tmux-0.0.4.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.7.16 Linux/5.15.0-1035-azure

File hashes

Hashes for pytest_tmux-0.0.4.tar.gz
Algorithm Hash digest
SHA256 fb29c77af5575556fd52d1c86e26e6ecb8bf70b62dd562e431d2577ecdb41718
MD5 1ce62dfdfd448a01f330ece46faae350
BLAKE2b-256 2c7996555d649c2785bc3d57eb959f737fb8d9beaa2701ecc05f2a7d38470b04

See more details on using hashes here.

File details

Details for the file pytest_tmux-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: pytest_tmux-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 11.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.7.16 Linux/5.15.0-1035-azure

File hashes

Hashes for pytest_tmux-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1bd41fe4d9732cb472ee52aba557be67e18e4575efea067565091907144a321a
MD5 5a29b41f718b959192aa52850ecb418b
BLAKE2b-256 273393c25827d2cba59790c1cecf269819e2844fe936380c7186116200e705ee

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