[TIP] why you should distribute tests with your application / module
Pete
pfein at pobox.com
Wed Sep 17 19:04:43 PDT 2008
On Sep 17, 2008, at 3:32 PM, Jesse Noller wrote:
>>> alternatively, you could skip the tests that require the large
>>> datasets when the datasets are not present. This way the end user
>>> can
>>> still run unit tests to determine to some degree whether or not the
>>> installed binary of your package is "working." In other words, some
>>> tests are better than no tests.
>>
>> Yeah, this is pretty much what I had in mind / suggested earlier.
>> Seems like this would make a decent nose plugin (--download-test-
>> data)... not that I'm likely to write it. ;-)
>>
>> Thanks all.
>>
>> --Pete
>
> I/we could hack it out exceedingly quickly - what do you see it doing,
> accepting in a URL and unzipping it? Do you want it to be a command
> line argument (i.e: url) or an artifact in the nose config file?
Ideal solution:
The plugin provides a external_data(url, unpack=True) function, which
returns a path on the local disk where the test data lives. The
plugin adds a --download-external-data option to control whether the
data is retrieved or not. If the data isn't available and that option
is not specified, external_data raises SkipTest.
The user would need to specify a directory for storing the external
data in, probably in their .noserc. Using httplib2 for the d/l'ding
might make the file management trivial, as it supports on disk caching
already. Otherwise, you'd need to track what files correspond to which
URLs. Not hard, but if httplib2 can do it for you, it's laziness ftw.
Names & functionality subject to change. Unpacking should probably
support .gz, .tar.gz & .zip (all pretty straightforward w/ stdlib).
I originally thought of less ambitious solutions - just specifying a
list of URLs in the config file/command line, say. But doing so
doesn't seem to add much beyond including a simple downloading script
in the package itself.
Thanks! Lemme know how I can help.
--Pete
More information about the testing-in-python
mailing list