Skip to main content

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.

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.3.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.3-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for bddcli-2.10.3.tar.gz
Algorithm Hash digest
SHA256 8587e2a988a85722a6758c492ae30dd1de52fa4f3acfa00a452d7610d96387c2
MD5 f325d3724384b4f273bacb241df8a196
BLAKE2b-256 a90ddb7fbb0f54761e336d49e8a49cd6417ce2d4574fc9e9a1f26da202cd215c

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for bddcli-2.10.3-py3-none-any.whl
Algorithm Hash digest
SHA256 80771b8af75ecc8ddc7a7573ab796d810b70480e81cbeb3655507789eab626da
MD5 805809c7e24dd1ee21e034e2cf3e05d5
BLAKE2b-256 2099879c89bf3909a664cd27461266b539cbc57b0e08adec3ddf8c29354dc3de

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2.10.3 This release

2 files

2.10.1

2 files

2.10.0

2 files

2.9.4

1 file

2.9.3

1 file

2.9.1

1 file

2.9.0

1 file

2.8.0

1 file

2.7.0

1 file

2.6.3

1 file

2.6.2

1 file

2.5.1

1 file

2.5.0

1 file

2.4.2

1 file

2.4.1

1 file

2.4.0

1 file

2.3.1

1 file

2.3.0

1 file

2.2.0

1 file

2.1.0

1 file

2.0.0

1 file

1.0.0

1 file

0.1.0

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page