【问题标题】:Nosetests and classmethodsNosetests 和类方法
【发布时间】:2017-01-19 16:28:05
【问题描述】:

我在运行nosetests 时遇到一个奇怪的错误:

======================================================================
ERROR: Extract test data from tarball.
----------------------------------------------------------------------
TypeError: extract_test_data() missing 1 required positional argument: 'calling_file'

有问题的代码分为两个文件:

测试/core.py

class CoreTestCase(unittest.TestCase):
    @classmethod
    def extract_test_data(cls, calling_file, base='data', name_only=False):
        """Extract test data from tarball.
           ...
        """
        ...

测试/.../test_this.py

class TestThis(core.CoreTestCase):
    """Run some tests."""

    @classmethod
    def setUpClass(cls):
        cls.TESTDAT_DIR = cls.extract_test_data(__file__)

导入等工作正常,unittest 没有任何问题。但由于某种原因,nose 正在破坏通话。

我已经尝试了以下所有方法:

cls.TESTDAT_DIR = cls.extract_test_data(calling_file=__file__)
cls.TESTDAT_DIR = cls.extract_test_data(cls,__file__)
cls.TESTDAT_DIR = cls.extract_test_data(cls, calling_file=__file__)

但我仍然得到一个奇怪的分类错误:

TypeError: extract_test_data() got multiple values for argument 'calling_file'
AttributeError: type object 'TestThis' has no attribute 'TESTDAT_DIR'

【问题讨论】:

  • 尝试将extract_test_data 重命名为不包含test 的名称,例如extract_tst_data。默认情况下,nosetests 会查找其中包含单词 test 的任何函数/方法,并将它们视为测试。

标签: python unit-testing python-3.5 nose


【解决方案1】:

nose 正在尝试运行extract_test_data,就像它是一个单元测试一样。重命名它以排除令牌test 或将其添加到extract_test_data

from nose.tools import nottest

class CoreTestCase(unittest.TestCase):

@nottest
@classmethod
def extract_test_data(cls, calling_file, base='data', name_only=False):
    """Extract test data from tarball.
       ...
    """
    ...

编辑:link 到文档中解释说,默认情况下,testMatch 正则表达式将运行has test or Test at a word boundary or following a - or _ 的任何函数

【讨论】:

  • 我以为它只测试了以 test 开头的方法...还是只是 unittest
  • 默认情况下 (link) 它将运行 has test or Test at a word boundary or following a - or _ 的任何函数
  • 太棒了!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多