pytest-shell-utilities 1.9.3

Last updated:

0 purchases

pytest-shell-utilities 1.9.3 Image
pytest-shell-utilities 1.9.3 Images
Add to Cart

Description:

pytestshellutilities 1.9.3

What is Pytest Shell Utilities

“When in doubt, shell out”
—Thomas S. Hatch

This pytest plugin was extracted from pytest-salt-factories.
If provides a basic fixture shell which basically uses subprocess.Popen
to run commands against the running system on a shell while providing a nice
assert’able return class.

Install
Installing pytest-shell-utilities is as simple as:
python -m pip install pytest-shell-utilities
And, that’s honestly it.


Usage
Once installed, you can now use the shell fixture to run some commands and assert against the
outcome.
def test_assert_good_exitcode(shell):

ret = shell.run("exit", "0")
assert ret.returncode == 0


def test_assert_bad_exitcode(shell):

ret = shell.run("exit", "1")
assert ret.returncode == 1
If the command outputs parseable JSON, the shell fixture can attempt loading that output as
JSON which allows for asserting against the JSON loaded object.
def test_against_json_output(shell):
d = {"a": "a", "b": "b"}
ret = shell.run("echo", json.dumps(d))
assert ret.data == d
Additionally, the return object’s .stdout and .stderr can be line matched using
pytest.pytester.LineMatcher:
MARY_HAD_A_LITTLE_LAMB = """\
Mary had a little lamb,
Its fleece was white as snow;
And everywhere that Mary went
The lamb was sure to go.
"""


def test_matcher_attribute(shell):
ret = shell.run("echo", MARY_HAD_A_LITTLE_LAMB)
ret.stdout.matcher.fnmatch_lines_random(
[
"*had a little*",
"Its fleece was white*",
"*Mary went",
"The lamb was sure to go.",
]
)


Documentation
The full documentation can be seen here.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.