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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 2 Python 3

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