你不指定你正在使用的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