2017-07-08 7 views
-3

私は非常にPythonのモックに新しいので、同じことを理解しようとしています。以下のコードで以下に示す1および2文の違いは何である、最終的に私がpythonの模様return_valueは次の通りです

import requests 

    def get_data(): 
     response = requests.get('https://www.somesite.com') 
     return response.status_code 

    if __name__ == '__main__': 
     print get_data() 

文のいずれかでmock_response.status_codeを設定することができるので、ここで以下のコードの違いは何である、

from call import get_data 
    import unittest 
    from mock import Mock,patch 
    import requests 

    class TestCall(unittest.TestCase): 
     def test_get_data(self): 
      with patch.object(requests,'get') as get_mock: 
       1.get_mock.return_value = mock_response = Mock() 
        # OR 
       2.mock_response = get_mock.return_value 
       mock_response.status_code = 200 
       assert get_data() == 200 

    unittest.main() 

答えて

0

docsを見る:

RETURN_VALUE:モックが呼び出されたときに返される値。デフォルトではこれは新しいモックです(最初のアクセス時に作成されます)。 return_value属性を参照してください。

requestsモジュールのget機能を嘲笑しています。 getメソッドはresponseオブジェクトを返し、後でそれをstatus_codeにアサートします。したがって、getモック関数にモックresponseを返すように指示しています。ドキュメントによれば、return_valueはデフォルトでMockオブジェクトを返します。したがって、1が明示的にMockを作成し、2がデフォルトの動作を使用する点を除いて、1と2の間に違いはありません。

副題として、をMockオブジェクトに設定してからアサートしたため、このユニットテストでは何もテストされていません。それは次のようなものです:

status_code = 200 
assert status_code == 200 
関連する問題