Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

tabletest

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tabletest

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

  • 1.1.0
  • PyPI
  • Socket score

Maintainers
1

TableTest Build Status

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

For Python 3, check out TableTest3.

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

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:

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:

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 build system. At the moment, only a py_library, apy_test and a pypi_package are defined as build rules. Nevertheless, tests are run through Bazel rather than through regular invocation. To run the tests use:

bazel test //:tabletest_test

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

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

References

See Tabletests and How Tabletest Works for a longer introduction as well as a deep dive into the library.

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc