2017-05-25 19 views
0

まだPythonには初めて、そしてPythonの単体テストを書いています。python:タヒオカラッパーを嘲笑

が見つかりました。http://tapioca-wrapper.readthedocs.io/en/stable/が見つかり、APIの周りにシンプルなクライアントを書きました。

モジュールは基本的にAPIのペイロードのキーと値のペアを取り、オブジェクトに変換します。これは動的であり、ペイロードによって生成されるため、私は単体テストを書く際に最善の方法では苦労しています。

サンプル・ラッパーのコードは次のとおりです。

api_client = APIClientAdapter() 
vm_machine = api_client.vm_machine(vm_name='playdohvm').get() 
print("vm name: {}".format(vm_machine.name().data) 

私のモックのコードは、これはタピオカ・ラッパーモジュールを模擬するためのより良い方法はあり

self.mock_api_client = Mock(
    spec=APIClientAdapter, 
    return_value=Mock(
     get=Mock(
      return_value=Mock(
       name=Mock(
        return_value=Mock(
         data='playdohvm')))))) 

のように見えますか?

答えて

0

テストしたいものによっては、模擬方法を変更すると思います。

たとえば、すべてをMockオブジェクトで表現する必要はなく、単純なオブジェクトを用意してmock.patchに置き換えるとよいでしょう。

class DummyAPIClientAdapter: 

    data = 'playdohvm' 

    def __call__(self, *args, **kwargs): 
     return self 
    def __getattr__(self, *args, **kwargs): 
     return self 

with mock.patch('APIClientAdapter', new=DummyAPIClientAdapter): 
    api_client = APIClientAdapter() 
    vm_machine = api_client.vm_machine(vm_name='playdohvm').get() 
    print("vm name: {}".format(vm_machine.name().data)) 
関連する問題