ライブラリを使用してPythonでテストを書いていunittest
ます。異なるテストデータを持ついくつかのテスト環境があります。
- テスト参照データを保存する最良の方法は何ですか ('test*.py' ファイルに保存したくありません)?
- 特別な形式 (メソッドを呼び出す入力値、比較する出力値) で保存する良い方法はありますか?
何か案は?
ライブラリを使用してPythonでテストを書いていunittest
ます。異なるテストデータを持ついくつかのテスト環境があります。
何か案は?
カスタム ストアからデータを取得して実際のテスト関数に渡すデコレータを作成できます。私は過去にこれをやった:
デコレータ
from functools import wraps
def data_provider(fn_dp):
def test_decorator(fn_test):
@wraps(fn_test)
def wrapper(self, *args, **kwds):
for data in fn_dp():
try:
fn_test(self, **data)
except AssertionError, e:
raise(AssertionError('{0} - [{1}]'.format(e, data)))
return wrapper
return test_decorator
これで、ユニットテストを次のように記述できます。
data = lambda: (
{
'input': '1234',
'expected_op': '1234'
},
{
'input': '1234',
'expected_op': '1234'
}
)
@helper.data_provider(data)
def test_something(self, input, expected_op):
self.assertEqual(input, expected_op)
これで、デコレータはすべてのデータ ポイントに対してテスト関数を呼び出します。
特定のケースについては、 を参照しfn_test(self, **data)
てdata_provider
ください。代わりに**data
、カスタム ストレージから読み取り、ここからテスト関数を呼び出すことができます。