Skip to main content

Unit testing module for table-like test, for Python 2.

Project description

# TableTest [![Build Status](https://travis-ci.org/horia141/tabletest.svg)](https://travis-ci.org/horia141/tabletest) #

Unit testing module for table-like test, for Python 2.

For Python 3, check out [TableTest3](https://github.com/horia141/tabletest3).

Many unit tests, especially those for side-effect free functions, can be written like this:

```python
import unittest
class FooTest(unittest.TestCase):
TEST_CASES = [ case_1, case_2, ... ]
def test_all(self):
for test_case in TEST_CASES:
do something with test_case
```

If there are many test cases, they'll all appear as a single unit test in test runners. Furthermore,
the failure of one test will cause all others to fail. Finally, it might be hard to identify which
of the tests actually fail.

TableTest aims to solve this problem. Using it, we can rewrite the previous example as:

```python
import tabletest
class FooTest(tabletest.TableTestCase):
TEST_CASES = [ case_1, case_2, ... ]
@tabletest.tabletest(TEST_CASES)
def test_all(self, test_case):
do something with test_case
```

When the testrunner will run this class, it will now find one test for each test case. Each test
will basically invoke `tabletest` with a single test case.

The setup functions like this:
* You must define a `TEST_CASE` class variable which can be iterated as a sequence.
* You must define a single argumet test function which does the testing required for each
test case.
* Each element of `TEST_CASE` generates a test function, called `test_all_{xx}`, for the previous
example.
* Iteration order is not guaranteed and should not be depended on.
* All other `unittest.TestCase` behavior remains intact: `setUp` and `tearDown` methods, other test
methods etc.
* More than one test can be annotated with tabletests per test case.
* However, the name must starst with `test_`, so it is picked up by the runner.

## Installation ##

Installation is straightforward, via `pip`:

```bash
pip install tabletest
```

## Development ##

Working on this project is pretty much standard Python development. Perhaps the most novel aspect is the usage of the [Bazel][bazel] build system. At the moment, only a `py_library`, a`py_test` and a `pypi_package` are defined as build rules. Nevertheless, tests are run through [Bazel][bazel] rather than through regular invocation. To run the tests use:

```bash
bazel test //:tabletest_test
```

To push a new version of the package to PyPi use:

```bash
bazel run //:tabletest_upload -- --user=[pypi user] --pass=[pypi password]
```

## References ##

See [Tabletests][tabletests] and [How Tabletest Works][how-tabletest-works] for a longer introduction as well as a deep dive into the library.

[tabletests]: https://horia141.github.com/jekyll/update/2015/08/31/tabletests.html
[how-tabletest-works]: https://horia141.github.com/jekyll/update/2015/09/08/how-tabletest-works.html
[bazel]: http://bazel.io

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

tabletest-1.1.0.tar.gz (3.3 kB view details)

Uploaded Source

Built Distribution

tabletest-1.1.0-py2-none-any.whl (6.1 kB view details)

Uploaded Python 2

File details

Details for the file tabletest-1.1.0.tar.gz.

File metadata

  • Download URL: tabletest-1.1.0.tar.gz
  • Upload date:
  • Size: 3.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for tabletest-1.1.0.tar.gz
Algorithm Hash digest
SHA256 a73bce648fbd067fb700caf8aab072c7d516d22d906b7097be7b2fc0c4259062
MD5 54ce0457e3e9f9c1a416b675edc4987d
BLAKE2b-256 66ba6babb9b1d4008c2dcddaedfa5562ebe00eef40b39167c527955c2aae401a

See more details on using hashes here.

File details

Details for the file tabletest-1.1.0-py2-none-any.whl.

File metadata

File hashes

Hashes for tabletest-1.1.0-py2-none-any.whl
Algorithm Hash digest
SHA256 28ec181ff824750a0f3a413316081bc0dde953def68ec812b5ca24f969d48cd7
MD5 306b1c68f4b79464d4736998d57b6370
BLAKE2b-256 a5119054e3e63dbac4b5424ac780d2746f269c6bed79e1193f28c7f0a9a3d71f

See more details on using hashes here.

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