testing -- what to do for testing code with behaviour dependant upon which files exist?

Brian van den Broek bvande at po-box.mcgill.ca
Sat Apr 2 15:30:13 EST 2005


Hi all,

I'm just starting to employ unit testing (I'm using doctest), and I am
uncertain how to handle writing tests where the behaviour being tested 
is dependant on whether certain file paths point to actual files.

I have a class which takes, in its __init__, a list of file paths to
process. The class has a method to validate that the paths passed in
are appropriate ones for the class. One portion of the validation code
ensures that the passed in file paths actually exist.

The relevant part of the validation method code looks like:

     # self.universe_files is a list of file paths
     non_existent_files = [ x for x in self.universe_files if
                                        not os.path.isfile(x) ]
     if non_existent_files:
         raise Files_dont_existError, non_existent_files

where Files_dont_existError is a custom exception with an informative
error message nicely printing a listing of all the file paths which
didn't point to extant files.

I can test the custom error class just fine, but I don't see how to
test the validation method itself.

My problem is that I want to test how it behaves both when it is sent 
only existing file paths, and when it is sent at least 1 non-existent 
one. But it seems like that in order to test that, I have to know in 
advance details of what files exist on the system running the tests. 
And, it won't do to pick file paths with the right properties with 
respect to my computer, as I am writing this code to share with 
someone else, and so I'd have to know details of his file system, too. 
(If it matters, I am using Python 2.4.1 on windows, and I am sending 
the code to someone running Python 2.2 on Linux.)

So, how does one handle such cases with tests?

Thanks for any suggestions. Best,

Brian vdB





More information about the Python-list mailing list