Skip to main content

Build simple tests to validate functions prints and outputs with configurable args, kwargs and simulated user inputs

Project description

didatictests

PyPI version shields.io PyPI version shields.io PyPI pyversions Commits GitHub latest commit License

Build Status Documentation Code Coverage


Features

  • Run functions with preconfigured simulated keyboard inputs

  • Build simple tests to validate functions prints and outputs with configurable args, kwargs and simulated user inputs

Installation

Stable Release: pip install didatictests
Development Head: pip install git+https://github.com/lmkawakami/didatictests.git

Documentation

Notebook showcase em português

Notebook de funcionalidades extras em português

For full package documentation please visit lmkawakami.github.io/didatictests.

Quick Start

from didatictests import Didatic_test

Demo function: the_function(arg):

  • receives 1 argument arg
  • receives 1 user input inp
  • calculates total = arg + int(inp)
  • prints total
  • return total
def the_function(arg):
    inp = input("One number, please: ")
    total = arg + int(inp)
    print(total)
    return total

Create and run some tests:


Test-1

test1 = Didatic_test(
    fn = the_function,
    args = Dt.parse_args(40),
    keyboard_inputs = ('2'),
    test_name = 'This one shall pass!',
    expected_output = 42,
    expected_prints = '42\n',
    run_prints_test = True,
    run_output_test = True,
    verbose=True
)

test1.run()
  • print:
Case: This one shall pass!
[I]: One number, please:  2
[P]: 42

outputs: ✔️  prints: ✔️
---------------------------------------------------
  • return:
{'output_is_correct': True, 'print_is_correct': True, 'test_failed': False, 'test_done': True}

Test-2

test2 = Didatic_test(
    fn = the_function,
    args = Dt.parse_args(40),
    keyboard_inputs = ('2'),
    test_name = 'You Shall Not Pass!!!',
    expected_output = 42,
    expected_prints = '13\n',
    run_prints_test = True,
    run_output_test = True,
    verbose=True
)

test2.run()
  • print:
Case: You Shall Not Pass!!!
[I]: One number, please:  2
[P]: 42

outputs: ✔️  prints: ❌
   ➖ Function args:      (40,) {}
   ➖ Keyboard inputs:    ('2',)
   ✔️ Function outputs:   42
   ➖ Expected output:    42
   ❌ fn internal prints: 42
   ➖ Expected prints:    13
---------------------------------------------------
  • return:
{'output_is_correct': True, 'print_is_correct': False, 'test_failed': False, 'test_done': True}

Test-3

test3 = Didatic_test(
    fn = the_function,
    args = Dt.parse_args('forty'),
    keyboard_inputs = ('two'),
    test_name = 'Error demo',
    expected_output = 42,
    expected_prints = '42\n',
    run_prints_test = True,
    run_output_test = True,
    verbose=True
)

test3.run()
  • print:
Case: Error demo
🚨⚠️🚨⚠️🚨 Error! 💀💀💀
<class 'ValueError'>
("invalid literal for int() with base 10: 'two'",)
invalid literal for int() with base 10: 'two'
[I]: One number, please:  two

---------------------------------------------------
  • return:
{'output_is_correct': False, 'print_is_correct': False, 'test_failed': True, 'test_done': False}

Development

See CONTRIBUTING.md for information related to developing the code. MIT license

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

didatictests-0.0.9.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

didatictests-0.0.9-py2.py3-none-any.whl (12.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file didatictests-0.0.9.tar.gz.

File metadata

  • Download URL: didatictests-0.0.9.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.10

File hashes

Hashes for didatictests-0.0.9.tar.gz
Algorithm Hash digest
SHA256 befef4d78e8f69d22541e67bda1ba8c491e2d9175d324c0c3cf7619b37a7fc37
MD5 53eb0ee508c9ef52ebe17b60e27ff739
BLAKE2b-256 3a9e93e8e861488abaa8ab9444df886798d95f85f870af98168e25c799069ced

See more details on using hashes here.

File details

Details for the file didatictests-0.0.9-py2.py3-none-any.whl.

File metadata

  • Download URL: didatictests-0.0.9-py2.py3-none-any.whl
  • Upload date:
  • Size: 12.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.10

File hashes

Hashes for didatictests-0.0.9-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 f3a456b065c658d58d5665720d8b3a2c72c1f401e42cbcd02723e5980c4e672a
MD5 349cf0b93ca28ff1c5112aa6f6f9dcab
BLAKE2b-256 1411e44fd19ddeee95302ff8df2d396971ba57d3c6be23de76c7652deb69ca5b

See more details on using hashes here.

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