A pytest plugin that enables tmux driven tests
Project description
pytest-tmux
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()
withtimeout
/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
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
Hashes for pytest_tmux-0.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1bd41fe4d9732cb472ee52aba557be67e18e4575efea067565091907144a321a |
|
MD5 | 5a29b41f718b959192aa52850ecb418b |
|
BLAKE2b-256 | 273393c25827d2cba59790c1cecf269819e2844fe936380c7186116200e705ee |