Tests for lazy (smart) devs
Project description
What is this?
Simple automated tests; for grug devs like me who don't have time to test.
How do I use this?
pip install grug_test
In your main.py
equivlent:
from grug_test import GrugTest
import os
# 1. say where the tests will be saved
grug_test = GrugTest(
project_folder=".",
test_folder="./tests/grug_tests",
fully_disable=os.environ.get("PROD")!=None,
replay_inputs=os.environ.get("RUN_TEST_CASES")!=None,
record_io=os.environ.get("RECORD")!=None,
)
# 2. slap @grug_test on any of your pure-functions
@grug_test(max_io=100)
def repeat(a,times):
for _ in range(times):
a += f"{a}"
return a
- That's all the setup!
RECORD=True python ./main.py
will record tests for youRUN_TEST_CASES=True python ./main.py
will check your functionsPROD=True python ./main.py
will run with grug totally disabled- Make sure to commit the generated tests to git
- When you do
RUN_TEST_CASES=True
, the git-diff will show you any problems - If you like the changes, well ✨volia✨ the git changes are your freshly-written test cases
- If you don't like the changes, well then it looks like you've got some dev work to do
- thats it
- When you do
Q&A
Does this work with @staticmethod
?
- Yes but you have to put the decorator it on the line BELOW the
@staticmethod
Does this work with ANY pure function?
- Almost, the arguments need to be seralizable. For example, if you pass a lambda function as an argument then grug_test can't really save/load that lambda function when
replay_inputs=True
. However, you can make almost any normal class seralizable, just checkout a tutorial on making a class work with python-pickle, or (even better) dofrom grug_test import yaml
and make your class be yaml-seralizable (tutorial/example here)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
grug_test-0.2.0.tar.gz
(6.6 MB
view hashes)
Built Distribution
grug_test-0.2.0-py3-none-any.whl
(647.4 kB
view hashes)
Close
Hashes for grug_test-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cdca7862bb9f3b0ed42c01d66fb8811afe032468798fc9a9c7b9cdaf3c7c191d |
|
MD5 | 3e1f498029a6c1e08419e634a7da8f20 |
|
BLAKE2b-256 | 6698a36a0dacc869ff7931b3a9f3371864f4e795dd1405742e1edab144169a37 |