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 Coverage Status

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


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.10.0.tar.gz (11.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bddcli-2.10.0-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file bddcli-2.10.0.tar.gz.

File metadata

  • Download URL: bddcli-2.10.0.tar.gz
  • Upload date:
  • Size: 11.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for bddcli-2.10.0.tar.gz
Algorithm Hash digest
SHA256 99326b67d14659352790f8d3a3ea1448997606ddb2aefb3ec55be47d4799dd3b
MD5 b2a524563fff0ce43bf536f3dad179a2
BLAKE2b-256 adde2533594f9e174dba0000741e0d87f51071f006b39a6ab28249975af60f26

See more details on using hashes here.

File details

Details for the file bddcli-2.10.0-py3-none-any.whl.

File metadata

  • Download URL: bddcli-2.10.0-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for bddcli-2.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 91a681ae5891ef11cbb11539e2f294d71c9f2cb95aad98840fee03cb350b4842
MD5 396e1105fc0d940beae4fb5168bbd2e0
BLAKE2b-256 87ca54f1c0409fe57d29d1923e5e7267da5397bca2646fcafbd7bf0a92c86bde

See more details on using hashes here.

Supported by

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