Test any command line interface in BDD manner.
Project description
bddcli
Test any command line interface in BDD manner.
About
A framework to easily test your command line interface in another(isolated)
process and gather stdout
, stderr
and exit-status
of the process.
Thanks to https://github.com/cheremnov for the Windows support.
Installation
Only Python >= 3.6
is supported.
pip install bddcli
Quickstart
Arguments
import sys
from bddcli import Given, when, stdout, status, stderr, Application, given
def foo():
print(' '.join(sys.argv))
return 0
app = Application('foo', 'mymodule:foo')
with Given(app, 'bar'):
assert status == 0
assert stdout == 'foo bar\n'
# Without any argument
when(given - 'bar')
assert stdout == 'foo\n'
# Pass multiple arguments
when('bar baz')
assert stdout == 'foo bar baz\n'
# Pass multiple arguments, another method
when(['bar', 'baz'])
assert stdout == 'foo bar baz\n'
# Add an argument
when(given + 'baz')
assert stdout == 'foo bar baz\n'
Standard input
with Given(app, stdin='foo'):
assert ...
# stdin is empty
when(stdin='')
assert ...
Standard output and error
from bddcli import stderr, stdout
assert stderr == ...
assert stdout == ...
Environment variables
import os
from bddcli import Given, stdout, Application, when, given
def foo():
e = os.environ.copy()
del e['PWD']
print(' '.join(f'{k}: {v}' for k, v in e.items()))
app = Application('foo', 'mymodule:foo')
with Given(app, environ={'bar': 'baz'}):
assert stdout == 'bar: baz\n'
# Without any variable
when(environ=given - 'bar')
assert stdout == '\n'
# Add another variables
when(environ=given + {'qux': 'quux'})
assert stdout == 'bar: baz qux: quux\n'
See tests for more examples.
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
bddcli-2.9.4.tar.gz
(9.4 kB
view details)
File details
Details for the file bddcli-2.9.4.tar.gz
.
File metadata
- Download URL: bddcli-2.9.4.tar.gz
- Upload date:
- Size: 9.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 762944d3efdce205f121b9c0cc12b124b5caccfb0a3f44d4bb72bb318f48a175 |
|
MD5 | 6ddb89a7a18aa76e83b616dfad90619d |
|
BLAKE2b-256 | 0065510fc767394ee3af9fac7d5199ce69607fc807a48e9b5f7444e13de6b507 |