这是问题的迷你版
a = [[1,2,3][0,0,0]]
b = [[1,0,1][0,0,0]]
c = [[0,0,0][1,0,1]]
因此,如果级别 1 是 [] 而级别 2 是 [[]],那么我要做的是测试曾经的列表以查看级别 2 是否匹配(无论顺序如何),所以在这种情况下 b,c 是等价的。
我正在使用单元测试和鼻子测试来运行它们如果我只想针对另一个表测试一个表,我会执行以下操作:
函数 truth() 创建我的表
def test_table1_table2(self):
for row in truth(1,3):
self.assertIn(row,truth(2,4))
但我的目标是针对我创建的所有其他表(大约 20 个并且还在增长)测试所有表。一些我无法解决的问题(我不确定我是否需要阅读单元测试文档或鼻子测试,或者甚至不需要它们!)
我的猜测是只使用更多的 for 循环来消除任何可能性。但是使用
>>> nosetest
与
assertIn
只是在第一个错误处停止,这不是我想要的。我需要扫描并收集有关哪些列表等效的信息(无论顺序或嵌套列表)。也许我应该创建一些东西而忘记单元测试?
所以我的首选输出类似于
table1 and table2 are not equivalent
table1 and table2 are not equivalent
或者可能更有用和更短只是
table1 and table10 are equivalent
这是我目前拥有的代码,几乎所有内容都只是一个整数,期望真值()生成真值表(嵌套列表):
114 def test_all(self):$ |~
115 ''' will test all tables'''$ |~
116 for expression in range(self.count_expressions()):$ |~
117 num_var = count_vars(exp_choose(expression))$ |~
118 for row in truth(expression, num_var):$ |~
119 for expression2 in range(self.count_expressions()):$ |~
120 num_var2 = count_vars(exp_choose(expression2))$ |~
121 for row2 in truth(expression2, num_var2):$ |~
122 self.assertIn(row, truth(expression2,num_var2))