nosetests 将导入的方法标记为非测试用例
nosetests mark imported method as non-test-case
nosetest 使用启发式方法来识别哪些函数是测试用例。当导入一个名称不明确的方法进行测试时,这会变得很尴尬,例如:
foo/foo.py
def get_test_case(text):
return "xyz"
(注意目录 foo 被排除在外,这与将 foo/foo.py 识别为测试用例的 nosetests 无关)
tests/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
以在 nosetests 中隐藏它,但这不是我正在寻找的答案。
这是一个相关问题:
问题中提出了两个解决方案
- 在定义
get_test_case
的模块中使用 nottest 装饰器。
from nose.tools import nottest
@nottest
def get_test_case(text):
return "xyz"
- 在测试代码中使用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"), ...)
nosetest 使用启发式方法来识别哪些函数是测试用例。当导入一个名称不明确的方法进行测试时,这会变得很尴尬,例如:
foo/foo.py
def get_test_case(text):
return "xyz"
(注意目录 foo 被排除在外,这与将 foo/foo.py 识别为测试用例的 nosetests 无关)
tests/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
以在 nosetests 中隐藏它,但这不是我正在寻找的答案。
这是一个相关问题:
问题中提出了两个解决方案
- 在定义
get_test_case
的模块中使用 nottest 装饰器。
from nose.tools import nottest
@nottest
def get_test_case(text):
return "xyz"
- 在测试代码中使用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"), ...)