Performing Unit tests
Unit tests are automated tests that test a small piece of code, usually a function or method. Python has the PyUnit API for unit testing. As NumPy users, we can make use of the assert functions that we saw in action before.
We will write tests for a simple factorial function. The tests will check for the so-called happy path (regular conditions and is expected to always pass) and for abnormal conditions:
We start by writing the factorial function:
def factorial(n): if n == 0: return 1 if n < 0: raise ValueError, "Unexpected negative value" return np.arange(1, n+1).cumprod()
The code is using the
arange
andcumprod
functions that we have already seen to create arrays and calculate the cumulative product, but we added a few checks for boundary conditions.Now we will write the unit test. Let's write a class that will contain the unit tests. It extends the
TestCase
class from theunittest
module, which is a part of standard Python. We test for calling...