非常に複雑なデータ構造 (セットのリストのリストの辞書など)を返す関数の単体テストを行っています。出力を手動で検証しましたが、気付かないうちに出力が変更されていないことを確認したいと考えています。
今私は持っています:
self.assertEquals(data,
{'Instr1': {'COUPON_LIST': '0 % SEMI 30/360',
'LEGAL_ENTITY': 'LE_XS0181523803',
'MATURITY_DATE': '2014/12/31',
'scenarios': {'Base': {'Spread Over Yield': -1.9/100,
'THEO/PV01': -1500.15,
'THEO/Value': 0.333,
'THEO/Yield': 3.3/100},
'UP': {'Spread Over Yield': -2.2/100,
'THEO/PV01': -1000.1,
'THEO/Value': 0.111,
'THEO/Yield': 5.5/100}}},
'Instr2': {'COUPON_LIST': None,
'LEGAL_ENTITY': 'LE_US059512AJ22',
'MATURITY_DATE': '2014/12/31',
'scenarios': {'Base': {'Spread Over Yield': None,
'THEO/PV01': None,
'THEO/Value': 1.0,
'THEO/Yield': 0.0},
'UP': {'Spread Over Yield': None,
'THEO/PV01': -15.15,
'THEO/Value': 4055.344,
'THEO/Yield': 4.4/100}}},
'Instr3': {'COUPON_LIST': '0 % SEMI 30/360',
'LEGAL_ENTITY': 'LE_XS0181523803',
'MATURITY_DATE': '2014/12/31',
'scenarios': {'Base': {'Spread Over Yield': -1.9/100,
'THEO/PV01': -1500.15,
'THEO/Value': 0.333,
'THEO/Yield': 3.3/100},
'UP': {'Spread Over Yield': -2.2/100,
'THEO/PV01': -1000.1,
'THEO/Value': 0.111,
'THEO/Yield': 5.5/100}}},
'Instr4': {'COUPON_LIST': None,
'LEGAL_ENTITY': 'LE_US059512AJ22',
'MATURITY_DATE': '2014/12/31',
'scenarios': {'Base': {'Spread Over Yield': None,
'THEO/PV01': None,
'THEO/Value': 1.0,
'THEO/Yield': 0.0},
'UP': {'Spread Over Yield': None,
'THEO/PV01': -15.15,
'THEO/Value': 4055.344,
'THEO/Yield': 4.4/100}}}}
2 つの問題があります。
テストされたクラスは安定しておらず、データは変更される可能性があります。その場合、出力が変更された場所をすばやく特定し、違いのみを検証したいと考えています。たとえば、次のような素敵な出力を探しています
data['Instr1']['MATURITY_DATE']: '2014/12/31' != '31/12/2014'
data['Instr5']: lhs にノードが見つかりません
しかし同時に、構造のすべてのノードを手動でテストしたくありません。
ご覧のとおり、一部の要素は float で、4.4/100 != 0.044 です。フロート ノードで AssertAlmostEqual を実行し、それ以外のすべてで AssertEqual を実行するロジックが必要です。
これを行うライブラリはありますか、それとも自分で作成する必要がありますか?