私はpythonでunittest
ライブラリを使ってテストを書いていますが、私はさまざまなテストデータを持ついくつかのテスト環境を持っています。テスト参照データを別の店舗に保存する方法は?
- テスト参照データを保存する最良の方法は何ですか(私はそれらを 'test * .py'ファイルに入れたくありません)。
- 特別な形式(値を入力してメソッドを呼び出し、比較する出力値)を保存する良い方法はありますか?
私はpythonでunittest
ライブラリを使ってテストを書いていますが、私はさまざまなテストデータを持ついくつかのテスト環境を持っています。テスト参照データを別の店舗に保存する方法は?
カスタムストアからデータを取得し、実際のテスト機能に渡すデコレータを作成することができます。
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)
今デコレータは、すべてのデータポイントのためにテスト関数を呼び出します:
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
は今、私はこのように私のユニットテストを書くことができ
デコレータ:私は過去にこれをやりました。
具体的なケースについては、fn_test(self, **data)
をdata_provider
でご覧ください。 **data
の代わりにカスタムストレージから読み込み、ここからテスト関数を呼び出すことができます。
データストアを整理する方法が必要です。すなわち:私は2つの入力(私はids)を入力し、ボタンをクリックして結果(テーブル)をチェックする必要があります –
私のソリューション次: 私は魔女は(setUpメソッドで呼び出さ)各テストの前に、JSONファイルからの試験データを取得し、ストレージ・クラスを持っている:
def setUp(self):
self.data = self.storage.getDataFor(self._testMethodName)
def test_ftu_02_003(self):
self.assertEqual(self.data['title'], self.page.get_title())
self.assertEqual(self.data['header'], self.page.get_header())
とサンプルJSONファイルの例、JSON形式のファイル名は同じです
{
"test_ftu_02_003":{
"title":"example_title",
"header":"example_title"
}
}
ので、私は、各的環境用のファイルとフォルダへのパスを変更することができ、そしてそれはPythonコードからJSONファイルを書き換えるのは簡単です:PYファイル名として。
質問:出力データはどうですか?
回答:すべてのデータが入力データです(アサート*に入力されます)
Andrew、少し編集しました。データストアに「入力データ」と「期待される結果」があると思われますか? – karlcow