Using assertions to test behavior

Now that we're satisfied that analyze_text() exists and accepts the right number of arguments, let's see if we can make it do real work. The first thing we want is for the function to return the number of lines in the file, so let's define that test:

# text_analyzer.py

class TextAnalysisTests(unittest.TestCase):
. . .
def test_line_count(self):
"Check that the line count is correct."
self.assertEqual(analyze_text(self.filename), 4)

Here we see our first example of an assertion. The TestCase class has many assertion methods, and in this case we used assertEqual() to check that the number of lines counted by our function is equal to four. If the value returned by analyze_text() is not equal to four, this assertion will cause the test method to fail. And if we run our new test, we see that this is precisely what happens:

% python text_analyzer.py
.F
======================================================================
FAIL: test_line_count (__main__.TextAnalysisTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "text_analyzer.py", line 28, in test_line_count
self.assertEqual(analyze_text(self.filename), 4)
AssertionError: None != 4

----------------------------------------------------------------------
Ran 2 tests in 0.003s

FAILED (failures=1)

Here we see that we're now running two tests, that one of them passes, and that the new one fails with an AssertionError.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset