A goodie-bag of unix shell and environment tools for py.test
This library is a goodie-bag of Unix shell and environment management tools for automated tests. A summary of the available functions is below, look at the source for the full listing.
Install using your favourite package manager::
.. code:: bash
pip install pytest-shutil
# or..
easy_install pytest-shutil
The workspace fixture is simply a temporary directory at function-scope with a few bells and whistles::
.. code:: python
# Enable the fixture explicitly in your tests or conftest.py (not required when using setuptools entry points)
pytest_plugins = ['pytest_shutil']
def test_something(workspace):
# Workspaces contain a handle to the path.py path object (see https://pathpy.readthedocs.io/)
path = workspace.workspace
script = path / 'hello.sh'
script.write_text('#!/bin/sh\n echo hello world!')
# There is a 'run' method to execute things relative to the workspace root
workspace.run('hello.sh')
pytest_shutil.env
: Shell helpers+--------------+------------------------------------------------------+ | function | description | +==============+======================================================+ | set_env | contextmanager to set env vars | +--------------+------------------------------------------------------+ | unset_env | contextmanager to unset env vars | +--------------+------------------------------------------------------+ | no_env | contextmanager to unset a single env var | +--------------+------------------------------------------------------+ | no_cov | contextmanager to disable coverage in subprocesses | +--------------+------------------------------------------------------+
pytest_shutil.cmdline
: Command-line helpers+---------------------------------+----------------------------------------------------------------+
| function | description |
+=================================+================================================================+
| umask | contextmanager to set the umask |
+---------------------------------+----------------------------------------------------------------+
| chdir | contextmanager to change to a directory |
+---------------------------------+----------------------------------------------------------------+
| TempDir | contextmanager for a temporary directory |
+---------------------------------+----------------------------------------------------------------+
| PrettyFormatter | simple text formatter for drawing title, paragrahs, hrs. |
+---------------------------------+----------------------------------------------------------------+
| copy_files | copy all files from one directory to another |
+---------------------------------+----------------------------------------------------------------+
| getch | cross-platform read of a single character from the screen |
+---------------------------------+----------------------------------------------------------------+
| which | analoge of unix which
|
+---------------------------------+----------------------------------------------------------------+
| get_real_python_executable | find our system Python, useful when running under virtualenv |
+---------------------------------+----------------------------------------------------------------+
pytest_shutil.run
: Running things in subprocesses+-------------------------+----------------------------------------------------------------------------+ | function | description | +=========================+============================================================================+ | run | run a command, with options for capturing output, checking return codes. | +-------------------------+----------------------------------------------------------------------------+ | run_as_main | run a function as if it was the system entry point | +-------------------------+----------------------------------------------------------------------------+ | run_module_as_main | run a module as if it was the system entry point | +-------------------------+----------------------------------------------------------------------------+ | run_in_subprocess | run a function in a subprocess | +-------------------------+----------------------------------------------------------------------------+ | run_with_coverage | run a command with coverage enabled | +-------------------------+----------------------------------------------------------------------------+
1.7.0
- All: Support pytest >= 4.0.0
- All: Support Python 3.7
- pytest-server-fixtures: if host not defined on your machine, default
to localhost
- pytest-server-fixture: Pin to rethinkdb < 2.4.0 due to upstream API
changes
- pytest-verbose-parametrize: Add support for revamped marker
infrastructure
- pytest-verbose-parametrize: Fix integration tests to support pytest
>= 4.1.0
- pytest-virtualenv: Add virtualenv as install requirement. Fixes #122
- pytest-webdriver: Fix RemovedInPytest4Warning using getfixturevalue
- circleci: Fix checks by skipping coverall submission for developer
without push access
- wheels: Generate universal wheels installable with both python 2.x
and 3.x
- dist: Remove support for building and distributing \*.egg files
- VagrantFile: Install python 3.7 and initialize python 3.7 by default
- Fix DeprecationWarning warnings using "logger.warning()" function
1.6.2 (2019-02-21)
1.6.1 (2019-02-12)
- pytest-server-fixtures: fix exception when attempting to access
hostname while server is not started
1.6.0 (2019-02-12)
1.5.1 (2019-01-24)
- pytest-verbose-parametrize: fixed unicode parameters when using
``@pytest.mark.parametrize``
1.5.0 (2019-01-23)
1.4.1 (2019-01-18)
- pytest-server-fixtures: server fixture binary path specified in ENV
now only affect server class 'thread'
1.4.0 (2019-01-15)
1.3.1 (2018-06-28)
- Use pymongo list\_database\_names() instead of the deprecated
database\_names(), added pymongo>=3.6.0 dependency
1.3.0 (2017-11-17)
1.2.12 (2017-8-1)
- Fixed regression on cacheing ephemeral hostname, some clients were
relying on this. This is now optional.
1.2.11 (2017-7-21)
1.2.10 (2017-2-23)
- Handle custom Pytest test items in pytest-webdriver
1.2.9 (2017-2-23)
~~~~~~~~~~~~~~~~~
- Add username into mongo server fixture tempdir path to stop
collisions on shared multiuser filesystems
1.2.8 (2017-2-21)
~~~~~~~~~~~~~~~~~
- Return function results in shutil.run.run\_as\_main
1.2.7 (2017-2-20)
~~~~~~~~~~~~~~~~~
- More handling for older versions of path.py
- Allow virtualenv argument passing in pytest-virtualenv
1.2.6 (2017-2-16 )
1.2.5 (2016-12-09)
- Improvements for server runner host and port generation, now supports
random local IPs
- Bugfix for RethinkDB fixture config
1.2.4 (2016-11-14)
1.2.3 (2016-11-7)
- Improve resiliency of Mongo fixture startup checks
1.2.2 (2016-10-27)
1.2.1 (2016-3-1)
- Fixed pytest-verbose-parametrize for latest version of py.test
1.2.0 (2016-2-19)
1.1.1 (2016-2-16)
- pytest-profiling improvement: escape illegal characters in .prof
files (Thanks to Aarni Koskela for the PR)
1.1.0 (2016-2-15)
1.0.1 (2015-12-23)
- Packaging bugfix
1.0.0 (2015-12-21)