Is it possible to use Python's doctest concept for classes, not just functions?
If so, where shall I put the doctests - at the class' docstring, or at the constructor's docstring?
To clarify, I'm looking for something like:
class Test: """ >>> a=Test(5) >>> a.multiply_by_2() 10 """ def __init__(self, number): self._number=number def multiply_by_2(self): return self._number*2
Thanks in advance,
Adam
To run the tests, use doctest as the main program via the -m option to the interpreter. Usually no output is produced while the tests are running, so the example below includes the -v option to make the output more verbose.
doctest is a module included in the Python programming language's standard library that allows the easy generation of tests based on output from the standard Python interpreter shell, cut and pasted into docstrings.
A testcase is created by subclassing unittest. TestCase . The three individual tests are defined with methods whose names start with the letters test . This naming convention informs the test runner about which methods represent tests.
Instead of instantiating the object in every method, you can use the extraglobs
argument:
class Test: def multiply_by_2(self): """ >>> t.multiply_by_2() 10 """ return self._number*2 if __name__ == '__main__': import doctest doctest.testmod(extraglobs={'t': Test()})
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With