首页 > 解决方案 > 鼻子测试将导入的方法标记为非测试用例

问题描述

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

富/富.py

def get_test_case(text):
    return "xyz"

(注意目录 foo 被排除在外,这不是关于将 foo/foo.py 识别为测试用例的鼻子测试)

测试/test_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_test_case功能。

显然,我也可以重命名get_test_case以将其从鼻子测试中隐藏起来,但这不是我正在寻找的答案。

标签: pythonunit-testingnose

解决方案


这是一个相关的问题:让鼻子忽略名称中带有“测试”的函数

问题中提出了两种解决方案

  1. 定义get_test_case. _
from nose.tools import nottest

@nottest
def get_test_case(text):
    return "xyz"
  1. 在测试代​​码中使用nottest
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"), ...)

推荐阅读