2017-01-17 5 views
1

さまざまなストレージバックエンドを使用できるストレージインターフェイスを作成しました。デモンストレーションとして、オブジェクトを標準のPython辞書にキーと値のペアとして格納する実装を記述しました。コレクションインタフェースを実装するユニットテストクラス?

class MyStorageInterface(object): 
    def store(self, key, value): 
     raise NotImplementedError("Class must be subclassed") 

    def get(self, key): 
     raise NotImplementedError("Class must be subclassed") 

# Example implementation 
class DictStorage(MyStorageInterface): 
    def __init__(self): 
     self._cache = dict() 

    def store(self, key, value): 
     self._cache[key] = value 

    def get(self, key): 
     return self._cache[key] 

ここで、DictStorage実装のための単体テストを書きたいと思います。

storage = DictStorage() 
value = 8 
key = 'foo' 
storage.store(key, value) 
actual = storage.get(key) 
assert actual == 8, "cache value for %s is %s, expected %s" % (key, str(actual), str(value)) 

は、getメソッドまたはコレクション型のオブジェクトを実装、テストクラスのPython的パターンがあるかどうか、適切なユニットテストです:私の質問のようなものかどうかではありません。

答えて

2

「コレクション固有のもの」があるかどうかわかりませんが、テストの構造がわかります。唯一の違いは、私がunittestパッケージを利用すると、テストケースとして定義したいということです。

import unittest 


class MyStorageInterface(object): 
    def store(self, key, value): 
     raise NotImplementedError("Class must be subclassed") 

    def get(self, key): 
     raise NotImplementedError("Class must be subclassed") 


class DictStorage(MyStorageInterface): 
    def __init__(self): 
     self._cache = dict() 

    def store(self, key, value): 
     self._cache[key] = value 

    def get(self, key): 
     return self._cache[key] 


class DictStorageTests(unittest.TestCase): 
    def setUp(self): 
     self._sut = DictStorage() 

    def test_storing_and_retrieving_value(self): 
     value_in = 8 
     key = 'foo' 
     self._sut.store(key, value_in) 
     value_out = self._sut.get(key) 
     self.assertEqual(value_in, value_out) 


if __name__ == '__main__': 
    unittest.main() 

出力

. 
---------------------------------------------------------------------- 
Ran 1 test in 0.000s 

OK 
関連する問題