Gary wrote:
I'm working on a project where I'm doing various file manipulations.
I'm not familiar with the idioms are common or good for this situation,
so I'd appreciate advice and suggestions.

Question 1:  A number of checks apply to a set of files.  So I'm
wondering whether to have something like:

     def test_SomeTest(...):
         ...
         self.AssertAllFilesExist(fileList)

or

     def test_SomeTest(...):
         ...
         [ self.AssertFileExists(f) for f in fileList ]

Personally I avoid using list comprehensions with side-effects; if I don't actually want the list I write it out:
for f in fileList:
self.AssertFileExists(f)


Question 2:  A more complicated example:  My object defines its own
conditions that can be queried, e.g.

     def test_SomeTest(...):
         myObject.DoSomething()
         self._assert(myObject.isFileTypeQ(someFile))

but the parameter someFile is often an expression that should be
encapsulated into the assertion.  This gives me two possibilities:  I
can define a stand-alone query that takes myObject as a parameter:

     def AssertIsTypeQ(theObjectBeingTested, rawFileInfo):
         someComputedFile = DoStuff(rawFileInfo)
         return theObjectBeingTested.isFileTypeQ(someComputedFile)

I would write this method to actually do the assertion: def AssertIsTypeQ(theObjectBeingTested, rawFileInfo): someComputedFile = DoStuff(rawFileInfo) self.assert_(theObjectBeingTested.isFileTypeQ(someComputedFile))

and then call it from within various tests as:
      self.AssertIsFileTypeQ(myObject, someFile)

I think of it as extending the standard assertions with domain-specific ones.

I often write methods called checkSomething() that do a bit of work and check the result. So I might actually call the above method something like checkDoStuffIsFileTypeQ().

So, the convention I use is
- write assertSomething() primitives that just check a condition
- write checkSomething() methods that do some work and check the result
- build the actual tests using the above

Kent
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to