如果我想编写单元测试,我只需将文件放在我的test/
子目录中,我的测试类将从unittest.TestCase
中删除。
现在我想在测试套件中使用这样的模式:我在test/
中有一个python文件,其中有一个类(扩展unittest.TestSuite
),它读取文件并从中生成测试。我已经有了解析文件的代码并从中生成了TestCase。
但鼻子没有发现这个类。如何让鼻子知道这个文件并从中生成测试?
答案 0 :(得分:1)
您没有指定您正在使用的python版本。使用Python 2.7+,您可以在模块中定义一个load_tests
函数,该函数将被调用以为模块创建TestSuite。
但是,nose会忽略load_tests协议。如果你有nose2,那么它的加载测试协议会有plugin。
否则,您创建一个空白TestCase
并填充生成的测试函数。例如:
import unittest
data = ["a", "b", "c"] # or from whatever source you want
class GeneratedTests(unittest.TestCase):
def setUp(self):
self.correct = "b"
def setup_module():
for i, d in enumerate(data):
test_driver = create_driver(d)
name ="test_generated{}".format(i)
setattr(GeneratedTests, name, test_driver)
def create_driver(d):
def test_driver(self):
self.assertEqual(d, self.correct)
return test_driver
setup_module()
最后一种方法是使用subtest context manager。这仅适用于3.4+。但是,你可以找到一个穷人的替代here。希望它能帮助您以更易读的方式构建生成的测试。