2012-04-24 4 views
3

私はpythonでunittestライブラリを使ってテストを書いていますが、私はさまざまなテストデータを持ついくつかのテスト環境を持っています。テスト参照データを別の店舗に保存する方法は?

  • テスト参照データを保存する最良の方法は何ですか(私はそれらを 'test * .py'ファイルに入れたくありません)。
  • 特別な形式(値を入力してメソッドを呼び出し、比較する出力値)を保存する良い方法はありますか?

+0

Andrew、少し編集しました。データストアに「入力データ」と「期待される結果」があると思われますか? – karlcow

答えて

1

カスタムストアからデータを取得し、実際のテスト機能に渡すデコレータを作成することができます。

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の代わりにカスタムストレージから読み込み、ここからテスト関数を呼び出すことができます。

+0

データストアを整理する方法が必要です。すなわち:私は2つの入力(私はids)を入力し、ボタンをクリックして結果(テーブル)をチェックする必要があります –

0

私のソリューション次: 私は魔女は(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ファイル名として。

質問:出力データはどうですか?
回答:すべてのデータが入力データです(アサート*に入力されます)

関連する問題