Is there a way to use Python unit test assertions outside of a TestCase?

python, unit-testing

Solution

You can create a instance of `unittest.TestCase()` and call the methods on that.

import unittest

tc = unittest.TestCase()
tc.assertIsNotNone(a)

On older Python versions (Python 2.7 and earlier, 3.0, 3.1) you need to you pass in the name of an existing method on the class `TestCase` class (normally it's passed the name of a test method on a subclass). `__init__` will do in this case:

tc = unittest.TestCase('__init__')
tc.assertIsNotNone(a)

However, you are probably looking for a good Mock library instead. `mock` would be a good choice.

Another option is to use `pytest`, which augments `assert` statements to provide the same or more context as `unittest.TestCase()` assertion methods; you'd simply write `assert a is not None`.

Problem

I need to create a fake helper class to be used in unit tests (injected into tested classes). Is there some way to use TestCase assertions in such class? I would like to use the assertions for some common checks performed by the Fake class. Something like: ``` class FakeFoo(object): def do_foo(self, a, b): assertNotNull(a) ... ```

Original source

Related problems