A simple cli-based recorder for Python
Project description
simple_test_generator
Automated, comprehensive and clean pytest test cases.
Description
If we format our code with tools like Black, then why don't we do the same with our tests?
Helps you reach 100% test coverage with real-world test cases. Tests that are generated "just work", i.e they are clean, unaware of implementation details, and doesn't require active maintenance.
It works well if your functions are deterministic (e.g pure).
If not, then you should probably make them so!
It's DDT for pytest (development-driven testing, data-driven tests, or both :nerd_face:)
why?
Too tedious/hard to generate custom data for your application?
- save time by having tests generated for you :tada:
- dramatically increase test code coverage with little effort
- write more maintainable tests by separating code and data
- helps you organise your test code consistently in new projects, or:
- replace your existing disorganised test code :+1:
- accelerate your migration to pytest
Tests that you write manually can still be made to follow the same conventions as simple_test_generator for consistency
Using in normal runs
Using while running tests
then, confirm that your test cases expected value are correct.
finally, install it only as a test dependency.
Demos
See botostubs going from 0 to 99% under 20 seconds!
Releasing on PyPI
pipenv shell
flit build
flit publish
Enter password when prompted.
Docs
Running over and over write test cases in new files to avoid overwriting your previous test cases. The filenames are appended with -00, -01, ... for up to 10 files.
If your function arguments are not serialisable, then test cases won't be generated. You will see an error in the logs for that function.
Dev docs
section still rough; personal notes
calling -m simple_test_generator
isn't dropping in debugger. It works when using as a library with Recorder(): ...
Notes
- It won't be able to support all types of data, e.g asserting functions that return other functions. See section on how to handle this.
- This project uses pickling to load the test data. If you're the one generated test data, then it should be fine loading it during tests. Otherwise, don't load untrusted test data.
Features
- Handles functions that return generators by automatically extending these into Python lists so that they can be asserted.
TODO
- Minor issue: functions in your main module may be loaded twice, creating identical test cases twice for that function. (maybe happening only in this project)
- Support functions that return functions. We need a reliable way to assert equivalence between a function and its deserialised representation.
Related
These projects resemble this one but mine requires much less effort on your part and generates even less boilerplate :blush:
What if you have test failures?
It may be due to a bug in simple_test_generator but it's probably because it's difficult to serialise all data types, e.g file descriptors.
Cases that you should handle on your own:
- Assertion does not work properly on your objects
You should define an
__eq__
function in your class. This will ensure that pytest asserts the return values properly.
How to report in issue
- Raise an issue here about the test failure (or upvote an existing one)
- Paste your function code (or its signature)
- Paste the json file that simple_test_generator generated, e.g
test-data/path/to/function/01.json
- State what you were expecting
- State what happened instead
Copyright
Released under the MIT licence. See file named LICENCE for details.
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
Built Distribution
File details
Details for the file simple_test_generator-0.27.tar.gz
.
File metadata
- Download URL: simple_test_generator-0.27.tar.gz
- Upload date:
- Size: 50.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.22.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50d0cdf29202659a93a0613825beb95b979bf958259572ad91ebc3f91db6298b |
|
MD5 | 66b50267c3eb6355ffe9187f0bea7aae |
|
BLAKE2b-256 | 2b922386ed23bc99ac56fa250968da8eb5930c0d3a8f5112531589b07d556a1c |
File details
Details for the file simple_test_generator-0.27-py2.py3-none-any.whl
.
File metadata
- Download URL: simple_test_generator-0.27-py2.py3-none-any.whl
- Upload date:
- Size: 12.8 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.22.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ae0257ba10c039adf484eedf26a80870e74277af3c9c5d4aaacbe2ec1c8ba44 |
|
MD5 | 857ba6529027c219f0a667994bd34b73 |
|
BLAKE2b-256 | 0db26ff160ceb23664792acb93ae2660ce89f6b9f29e7e743d2477aa071a4fe6 |