Build simple tests to validate functions prints and outputs with configurable args, kwargs and simulated user inputs
Project description
didatictests
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
Quick Start
from didatictests import Didatic_test as Dt
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 = Dt(
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 = Dt(
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 = Dt(
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}
Installation
Stable Release: pip install didatictests
Development Head: pip install git+https://github.com/lmkawakami/didatictests.git
Documentation
For full package documentation please visit lmkawakami.github.io/didatictests.
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
Built Distribution
File details
Details for the file didatictests-0.0.5.tar.gz
.
File metadata
- Download URL: didatictests-0.0.5.tar.gz
- Upload date:
- Size: 14.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4340b840902527af49978a8ca27468183d48dc77b29e49f2e82cf568f2cc529e |
|
MD5 | 5bc6f33251da454e3ea4f1004ab70ed1 |
|
BLAKE2b-256 | a56f13948f52c5d56a6376233d26dee03bece6df713c9ac74e64b9c89d85f95b |
File details
Details for the file didatictests-0.0.5-py2.py3-none-any.whl
.
File metadata
- Download URL: didatictests-0.0.5-py2.py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 02d732ce790c2c45938378b41921ab4fec8817c4696ed9ae393578e4ace7fff7 |
|
MD5 | f6c3e8531353f8903a6723d573dd8552 |
|
BLAKE2b-256 | 8ef97be2d95eba701f2be6bc9dd4e10f991098e81fd95a20da23f6353354efec |