我已经读完了;我最接近的是提到不支持使用生成器函数和装饰器函数
class getsize
方法:setUp
tearDown
和getfilesize
用鼻子with_setup(setUp,tearDown)
。
我还有一个独特的生成函数(在同一个文件中)
使用循环创建getsize class
的实例并调用方法getfilesize
。
当我通过nosetests;
运行文件时,我发现@with_setup只在nose运行类时运行。
当我运行发电机功能时;永远不会被访问。作为一种解决方法,我添加了对setUp
和tearDown
方法的调用;我得到了预期的结果。这真让我烦恼,我已经做出了相当大的努力来找到答案。
[附加]这是代码部分:
class Test_getFileSize:
import logging
from nose.tools import with_setup
log = logging.getLogger("Test getfilesize")
def setUp(self):
print " running Setup",self.testsize
with open(self.mytestfile, "wb") as out:
out.seek(self.testsize-1)
out.write('0')
out.close()
def tearDown(self):
import os
print "Running tearDown"
os.remove(self.mytestfile)
@with_setup(setUp,tearDown)
def test_getFileSize(self):`
[此方法的其余部分和init跟随,但与问题无关。
答案 0 :(得分:0)
正如其他人提到的那样,为了进一步明确,我正在重申,不需要在测试函数中添加@with_setup装饰器。您已经在课程中添加了设置和拆卸功能,它们将在测试之前和之后自动运行。
从鼻子文档:
请注意,with_setup仅对测试函数有用,而不适用于测试 方法或TestCase子类内部。
现在,在你的情况下,你在TestCase类中有with_setup。鼻子文档明确提到这不起作用
但是你已经解决了这个难题,现在只需删除@with_setup装饰器就完成了。你的代码应该看起来像这样
class Test_getFileSize:
def setUp(self):
print " running Setup",self.testsize
...
def tearDown(self):
...
print "Running tearDown"
...
def test_getFileSize(self):
...