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/shn 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
|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
|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
|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|
- pytest-server-fixtures: added previously removed TestServerV2.kill() function
- pytest-profiling: pin more-itertools==5.0.0 in integration tests, as that’s a PY3 only release
- pytest-verbose-parametrize: fixed unicode parameters when using @pytest.mark.parametrize
- pytest-server-fixtures: made postgres fixtures and its tests optional, like all other fixtures
- pytest-server-fixtures: reverted a fix for pymongo deprecation warning, as this will break compatibility with pymongo 3.6.0
- pytest-server-fixtures: dropped RHEL5 support in httpd
- pytest-server-fixtures: server fixture binary path specified in ENV now only affect server class ‘thread’
- Fixing python 3 compatibility in Simple HTTP Server fixture
- Fixed broken tests in pytest-profiling
- Pinned pytest<4.0.0 until all deprecation warnings are fixed.
- pytest-webdriver: replaced deprecated phantomjs with headless Google Chrome.
- Add Vagrantfile to project to make test environment portable.
- Add .editorconfig file to project.
- pytest-server-fixtures: add TestServerV2 with Docker and Kubernetes support.
- pytest-server-fixtures: fix for an issue where MinioServer is not cleaned up after use.
- pytest-server-fixtures: fix deprecation warnings when calling pymongo.
- pytest-server-fixtures: close pymongo client on MongoTestServer teardown.
- pytest-server-fixtures: upgrade Mongo, Redis and RethinkDB to TestServerV2.
- coveralls: fix broken coveralls
- Use pymongo list_database_names() instead of the deprecated database_names(), added pymongo>=3.6.0 dependency
- Fixed workspace deletion when teardown is None
- Fixed squash of root logger in pytest-listener
- Added S3 Minio fixture (many thanks to Gavin Bisesi)
- Added Postgres fixture (many thanks to Gavin Bisesi)
- Use requests for server fixtures http gets as it handles redirects and proxies properly
- Fixed regression on cacheing ephemeral hostname, some clients were relying on this. This is now optional.
- Fix for OSX binding to illegal local IP range (Thanks to Gavin Bisesi)
- Setup and Py3k fixes for pytest-profiling (Thanks to xoviat)
- We no longer try and bind port 5000 when reserving a local IP host, as someone could have bound it to 0.0.0.0
- Fix for #46 sourcing gprof2dot when the local venv has not been activated
- Handle custom Pytest test items in pytest-webdriver
- Add username into mongo server fixture tempdir path to stop collisions on shared multiuser filesystems
- Return function results in shutil.run.run_as_main
- More handling for older versions of path.py
- Allow virtualenv argument passing in pytest-virtualenv
1.2.6 (2017-2-16 )
- Updated devpi server server setup for devpi-server >= 2.0
- Improvements for random port picking
- HTTPD server now binds to 0.0.0.0 by default to aid Selenium-style testing
- Updated mongodb server args for mongodb >= 3.2
- Corrections for mongodb fixture config and improve startup logic
- Added module-scoped mongodb fixture
- Handling for older versions of path.py
- Fix for #40 where tests that chdir break pytest-profiling
- Improvements for server runner host and port generation, now supports random local IPs
- Bugfix for RethinkDB fixture config
- Bugfix for pymongo extra dependency
- Windows compatibility fix for pytest-virtualenv (Thanks to Jean-Christophe Fillion-Robin for PR)
- Fix symlink handling for pytest-shutil.cmdline.get_real_python_executable
- Improve resiliency of Mongo fixture startup checks
- Python 3 compatibility across most of the modules
- Fixed deprecated Path.py imports (Thanks to Bryan Moscon)
- Fixed deprecated multicall in pytest-profiling (Thanks to Paul van der Linden for PR)
- Added devpi-server fixture to create an index per test function
- Added missing licence file
- Split up httpd server fixture config so child classes can override loaded modules easier
- Added ‘preserve_sys_path’ argument to TestServer base class which exports the current python sys.path to subprocesses.
- Updated httpd, redis and jenkins runtime args and paths to current Ubuntu spec
- Ignore errors when tearing down workspaces to avoid race conditions in ‘shutil.rmtree’ implementation
- Fixed pytest-verbose-parametrize for latest version of py.test
- New plugin: git repository fixture
- pytest-profiling improvement: escape illegal characters in .prof files (Thanks to Aarni Koskela for the PR)
- New plugin: devpi server fixture
- pytest-profiling improvement: overly-long .prof files are saved as the short hash of the test name (Thanks to Vladimir Lagunov for PR)
- Changed default behavior of workspace.run() to not use a subshell for security reasons
- Corrected virtualenv.run() method to handle arguments the same as the parent method workspace.run()
- Removed deprecated ‘–distribute’ from virtualenv args
- Packaging bugfix
- Initial public release
Release history Release notifications
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size & hash SHA256 hash help||File type||Python version||Upload date|
|pytest_shutil-1.6.0-py2.7.egg (13.6 kB) Copy SHA256 hash SHA256||Egg||2.7|
|pytest_shutil-1.6.0-py2-none-any.whl (14.6 kB) Copy SHA256 hash SHA256||Wheel||py2|
|pytest-shutil-1.6.0.tar.gz (22.4 kB) Copy SHA256 hash SHA256||Source||None|