你不指定你正在使用的python版本。使用Python 2.7+,您可以在模块中定义一个load_tests
函数,该函数将被调用以创建该模块的TestSuite。
但是,鼻子忽略了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。希望它能帮助你以更可读的方式构建你生成的测试。
理想情况下,我想针对兼容性问题的Python 2.7。 – Kartoch 2014-12-02 12:37:08
问题已经更新与蟒蛇版本 – Kartoch 2014-12-02 12:37:23
这绝对是我正在寻找,但为蟒蛇2.7和鼻子。 – Kartoch 2014-12-02 12:38:24