0

我已经阅读了;我能找到的最接近的是提到不支持使用生成器函数和装饰器函数

class getsize 用方法:setUp tearDowngetfilesize 用鼻子with_setup(setUp,tearDown)

我还有一个独特的生成函数(在同一个文件中),它使用循环创建一个实例 getsize class并调用方法getfilesize

当我通过运行文件时,nosetests;我发现@with_setup 仅在鼻子运行类时才运行完成。

当我运行生成器功能时;它永远不会被访问。作为一种解决方法,我添加了对setUpandtearDown方法的调用;我得到了预期的结果。这真的让我很烦恼,我已经付出了相当大的努力来寻找答案。

[附加] 这是代码部分:

  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 遵循但与问题无关。

4

1 回答 1

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):
       ...
于 2013-08-10T08:59:48.403 回答