https://github.com/jaymon/pyt
Easily run python unittests
https://github.com/jaymon/pyt
commandline python python-unittest
Last synced: 9 months ago
JSON representation
Easily run python unittests
- Host: GitHub
- URL: https://github.com/jaymon/pyt
- Owner: Jaymon
- License: mit
- Created: 2013-05-17T02:00:07.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2025-02-17T23:22:47.000Z (10 months ago)
- Last Synced: 2025-03-17T21:43:33.638Z (9 months ago)
- Topics: commandline, python, python-unittest
- Language: Python
- Size: 265 KB
- Stars: 1
- Watchers: 2
- Forks: 2
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Pyt
Pyt is a lightweight wrapper around [Python's unittest module](https://docs.python.org/3/library/unittest.html) that adds some nice features and enhancements over the stock `unittest` module.
### Quickstart
Pyt overrides unittest's built-in pathfinding to be smarter and less verbose, so you can match tests using prefix matching which makes running a test like:
$ python -m unittest tests.foo_test.BarTestCase.test_che
as simple as:
$ pyt foo.Bar.che
But it's even less verbose if you want it to be, pyt can reach into the modules and classes to do its matching, so you don't even need to specify the module and class if you don't want to:
$ pyt che
#### More examples
To run all the `Happy` tests:
$ pyt Happy
To run all the `newmodule` tests:
$ pyt newmodule
To run more than one test:
$ pyt test1 test2 ...
To run every test `pyt` can find:
$ pyt
And the way I like to run all tests in the current directory:
$ pyt -vb
Which can also be written:
$ pyt --verbose --buffer
### Flags
To see everything pyt can do
$ pyt --help
#### --warnings
This will convert warnings into errors.
$ pyt --warnings
#### --rerun
If your last testrun had failing tests this will rerun only the tests that failed.
$pyt --rerun
### Things to be aware of
#### pyt uses Python's PEP 8 style conventions
`pyt` uses [Python's code styling conventions](http://www.python.org/dev/peps/pep-0008/) to decide what is the module and class, so, given input like this:
$ pyt foo.bar.Baz.che
`pyt` will consider `foo.bar` to be the module, `Baz` to be a class (because it starts with a capital letter), and `che` to be a method (since it comes after the class).
Likewise, `pyt` uses unittest conventions, so a test module should end with `_test` (eg, `foo.bar_test`) or start with test (eg, `test_foo.py`) and a TestCase class should extend `unittest.TestCase`, and test methods should start with `test_` (eg, `test_che`).
#### Vague input can cause pyt to run more tests than you expect
So if you have something like this:
project/
__init__.py
user.py
foo/
__init__.py
user.py
tests/
__init__.py
user_test.py
foo/
__init__.py
user_test.py
And you want to run tests for `foo.user` and you run:
$ pyt user
it will run both `tests/user_test` and `tests.foo.user_test`, the solution is to just be more verbose when you have to be:
$ pyt foo.user
#### Environment Variables
If you are running the tests within pyt, you might notice there is an environment variable `PYT_TEST_COUNT` that contains the count of how many tests pyt found to run.
## Installation
Use `pip`:
$ pip install pyt
You can also get it directly from the repo:
$ pip install --upgrade git+https://github.com/Jaymon/pyt#egg=pyt
## Testing
Testing on MacOS:
$ python -m unittest discover
Or, if you're really brave, you can use `pyt` to test itself:
$ python -m pyt tests -df