【发布时间】:2014-08-12 14:48:05
【问题描述】:
我是 Python 中 unittests 模块的新手,所以答案可能很明显。我有一堆属性要检查是否已存储在字典中:
petersen_prop = {
"n_vertex" : 10,
"n_edge" : 15,
...
}
每个“键”都是函数的名称,值是我希望单元测试验证的目标。有效的是相当冗长的代码:
import unittest
class PetersenGraph(unittest.TestCase):
def setUp(self):
# Create the graph here (not important to the question)
self.args = args
self.adj = adj
def test_n_vertex(self):
self.assertTrue(n_vertex(self.adj,**self.args) ==
petersen_prop["n_vertex"])
def test_n_edge(self):
self.assertTrue(n_edge(self.adj,**self.args) ==
petersen_prop["n_edge"])
# ..... hundreds of similar looking code blocks
unittest.main(verbosity=2)
似乎我违反了 DRY,我必须一遍又一遍地复制和粘贴相同的代码块。有没有办法以编程方式添加这些代码块,以便单元测试按预期工作?为了清楚起见,我希望输入是上面的字典,输出是一个工作相同的单元测试对象。
【问题讨论】:
-
n_edge和n_vertex函数定义在哪里? -
@dano 它们在范围内是本地的,因为来自全局块
n_vertex(xxx,**xxx)的调用将起作用。我通过from my_funcs import *导入函数来做到这一点,这是不好的做法,但我不确定让它工作的正确方法。
标签: python unit-testing reflection dry