我创建了一个python类Test_getFileSize,用于使用nose
相关部分:
def __init__(self,mytestfile="./filetest",testsize=102400):
''' Constructor'''
print " Running __init__", testsize,mytestfile
self.testsize=testsize
self.mytestfile = mytestfile
和主力方法:
@with_setup(setUp, tearDown)
def test_getFileSize(self):
from nose.tools import ok_, eq_,with_setup
import mp4
with open(self.mytestfile,"rb") as out:
filesize=mp4.getFileSize(out)
eq_(self.testsize,filesize,msg='Passed Test size')
print "Results ", filesize,self.testsize
如果我对包含此类的文件运行nosetest,它会使用默认值和正确的setUp和tearDown方法正确测试该类。问题是,当我编写一个类来执行此操作时,setUp方法永远不会运行。
我希望能够做的是测试不同的文件大小(即传递文件大小值)。
如果有更好的方法,我会全力以赴。如果可能的话,我宁愿不通过命令行来做。
由于 吉姆
答案 0 :(得分:0)
你可以编写一个测试函数(不是类的一部分),其中测试函数本身是一个生成器,每个yield返回一个新函数,用参数运行以生成另一个测试。如果您有500个不同的文件名/文件大小作为要测试的列表,那么这将很有效。
请点击此处查看简单示例/文档:http://nose.readthedocs.org/en/latest/writing_tests.html#test-generators
使用测试类,事情变得有点棘手 - 因为它不允许您将此生成器方法用于类方法。您可以使用元类来返回具有适当数量的函数的类来运行测试(例如,每个案例一个。)但这可能超出您想要的范围。
话虽这么说,您可能会发现只需要一个迭代文件名/大小列表的测试方法就可以了,并对每个方法执行测试。那里的工作要少得多,但也会为集体测试集产生一条“测试”输出线。
您可以参考这个问题,以获得一个人如何做到这一点的答案:
nose, unittest.TestCase and metaclass: auto-generated test_* methods not discovered