Skip to content Skip to sidebar Skip to footer

How Can I Store Testing Data For Python Nosetests?

I want to write some tests for a python MFCC feature extractor for running with nosetest. As well as some lower-level tests, I would also like to be able to store some standard inp

Solution 1:

I think that using __file__ to figure out where the test is located and storing data alongside the it is a good idea. I'm doing the same for some tests that I write.

This:

os.path.dirname(os.path.abspath(__file__))

is probably the best you are going to get, and that's not bad. :-)

Solution 2:

Based on the idea of using __file__, maybe you could use a module to help with the path construction. You could find all the files contained in the module directory, gather their name and path in a dictionnary for later use.

Create a module accessible to your tests, i.e. a directory besides your test such as testData, where you can put your data files. In the __init__.py of this module, insert the following code.

import os
from os.path import join,dirname,abspath
testDataFiles = dict()
baseDir = dirname(abspath(__file__)) + os.path.sep 
for root, dirs, files in os.walk(baseDir):
    localDataFiles = [(join(root.replace(baseDir,""),name), join(root,name)) for name in files] 
    testDataFiles.update( dict(localDataFiles))

Assuming you called your module testData and it contains a file called data.txt you can then use the following construct in your test to obtain the path to the file. aFileOperation is assumed to be a function that take a parameter path

import unittest
from testData import testDataFiles

classATestCase(unittest.TestCase):
    deftest_Something(self):
        self.assertEqual( 0, aFileOperation(testDataFiles['data.txt'] )

It will also allow you to use subdirectories such as

deftest_SomethingInASubDir(self):
        self.assertEqual( 0, aFileOperation(testDataFiles['subdir\\data.txt'] )

Post a Comment for "How Can I Store Testing Data For Python Nosetests?"