[TIP] doctests with either-or outcome

Pete pfein at pobox.com
Fri Sep 26 07:00:35 PDT 2008


On Sep 26, 2008, at 2:51 AM, Rob Kirkpatrick wrote:
> Is there a way of having a doctest pass if it has EITHER output A or  
> output B?  In, this case, we need to construct some pickled  
> resources, then use them for the test.  The first time the resource  
> is generated, it prints out a "generated resource x..." message.  If  
> the resource already exists, it generates no output.  Both outputs  
> are ok.  Running the tests twice ensures that the resources will all  
> be there and no generation messages are printed, which is what the  
> doctests currently expect, but this seems hacky...

Hmm, something sounds fishy here.  Your tests should be repeatable -  
they shouldn't depend on whether they've been run before. Are you  
trying to test the resource generation itself?  If yes, then you want  
to be running the generation in your tests twice - once to make sure  
they work and the the second time to make sure they don't repeat  
themselves. If not, this sounds more like a fixture and shouldn't be  
part of your tests themselves.  Remember, doctests run in the context  
of their module, so you could do the resource generation there (either  
in __main__ or by putting the doctests in a separate file entirely).

HTH,
--Pete



More information about the testing-in-python mailing list