ここに問題のミニバージョンがあります
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
これが私が現在持っているコードです。ほとんどすべてが整数であり、真理値表(ネストされたリスト)を作成する Truth() を期待しています:
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))