代码之家  ›  专栏  ›  技术社区  ›  Neo

python模拟下面的return_值是什么

  •  0
  • Neo  · 技术社区  · 7 年前

    mock_response.status_code 使用以下任一语句

       import requests
    
        def get_data():
            response = requests.get('https://www.somesite.com')
            return response.status_code
    
        if __name__ == '__main__':
            print get_data()
    

    以下代码之间的区别是什么,

        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()
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Sam R.    7 年前

    查看 docs :

    你在嘲笑 get requests 收到 方法应该返回一个 response 对象,稍后您将声明其 status_code 收到 回答 return_value Mock 对象,因此1和2之间应该没有区别,除非1显式创建 2使用默认行为。

    顺便说一句,单元测试什么都不测试,因为您设置了 status_代码 对象,然后断言它。这就像:

    status_code = 200
    assert status_code == 200