how to make all assertions in a unit test execute

Ben Finney ben+python at benfinney.id.au
Sun Oct 17 01:51:59 CEST 2010


Terry Reedy <tjreedy at udel.edu> writes:

> The temptation to write unfactored duplicate code like this is a
> negative of unittest.

I don't see that it's especially attributable to the ‘unittest’ module.
It's a common problem to be solved, and solutions are available.

> The question is whether get_filenames gets the proper number of names.
> One way to do it with unittest is something like
>
> def test_get_filenames_return_number(self):
>   inputs = ('myself', 'tom', 'jerry')
>   outputs= (      0,     1,       3)
>   self.assertEquals(outputs,
>    [len(get_filenames(self.dirname,f) for f in inputs])
>
> Listing inputs and outputs first makes it easy to check pairs and
> revise if needed.

These are sometimes called “test scenarios”: tuples, or other complex
data structures, that define parameters of a general test to be run over
all the scenarios.

> With hundreds or thousands of i/o pairs, something different would be
> needed.

For this purpose, the ‘testscenarios’ package is useful
<URL:http://pypi.python.org/pypi/testscenarios/>.

-- 
 \      “It is difficult to get a man to understand something when his |
  `\   salary depends upon his not understanding it.” —Upton Sinclair, |
_o__)                                                             1935 |
Ben Finney



More information about the Python-list mailing list