Skip to main content

Test any command line interface in BDD manner.

Project description

bddcli

Test any command line interface in BDD manner.

PyPI Build Status Coverage Status

About

A framework to easily test your command line interface in another(isolated) process and gather stdout, stderr and returnStatus of the process.

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, 'Pass single positional argument', 'bar'):
    assert status == 0
    assert stdout == 'foo bar\n'

    when('Without any argument', given - 'bar')
    assert stdout == 'foo\n'

    when('Pass multiple arguments', 'bar baz')
    assert stdout == 'foo bar baz\n'

    when('Pass multiple arguments, another method', ['bar', 'baz'])
    assert stdout == 'foo bar baz\n'

    when('Add an argument', given + 'baz')
    assert stdout == 'foo bar baz\n'

Standard input

with Given(app, 'Pass stdin', stdin='foo'):
    assert ...

    when('stdin is empty', 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, 'Environment variables', environ={'bar': 'baz'}):
    assert stdout == 'bar: baz\n'

    when('Without any variable', environ=given - 'bar')
    assert stdout == '\n'

    when('Add another variables', environ=given + {'qux': 'quux'})
    assert stdout == 'bar: baz qux: quux\n'

See tests for more examples.

Project details


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.3.0.tar.gz (7.7 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page