Python 鼻测试将导入的方法标记为非测试用例

Python 鼻测试将导入的方法标记为非测试用例,python,unit-testing,nose,Python,Unit Testing,Nose,NoTest使用启发式来识别哪些函数是测试用例。在导入名称不明确的方法进行测试时,这可能会变得很尴尬,例如: foo/foo.py def get_test_case(text): return "xyz" (注意目录foo被排除在外,这与将foo/foo.py标识为testcase的nosetest无关) 测试/测试_foo.py import unittest # causes TypeError: get_test_case() missing 1 required posit

NoTest使用启发式来识别哪些函数是测试用例。在导入名称不明确的方法进行测试时,这可能会变得很尴尬,例如:

foo/foo.py

def get_test_case(text):
    return "xyz"
(注意目录foo被排除在外,这与将foo/foo.py标识为testcase的nosetest无关)

测试/测试_foo.py

import unittest

# causes TypeError: get_test_case() missing 1 required positional argument: 'text'
from foo.foo import get_test_case

class TestTestCasesReader(unittest.TestCase):

     def test_get_test_case(self):
         self.assertEquals(get_test_case("fooBar"), ...)
我知道我可以在测试中解决这个问题:

import unittest
import foo.foo

# ...
        self.assertEquals(foo.get_test_case("fooBar"), ...)
但感觉应该有更好的方法来告诉nosetest停止
get\u test\u case
功能


显然,我也可以重命名
get\u test\u case
来隐藏它,但这不是我想要的答案。

这是一个相关的问题:

该问题提出了两种解决办法

  • 在定义
    get\u test\u用例的模块中使用decorator
  • 从nose.tools导入nottest
    @不测试
    def get_测试案例(文本):
    返回“xyz”
    
  • 在测试代码中使用
  • import unittest
    from nose.tools import nottest
    
    from foo.foo import get_test_case
    get_test_case = nottest(get_test_case)
    
    class TestTestCasesReader(unittest.TestCase):
    
         def test_get_test_case(self):
             self.assertEquals(get_test_case("fooBar"), ...)