如何在每个不同的测试中为我的请求mock设置不同的值?

2024-04-24 01:21:11 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的单元测试中,我有以下setUp函数:

    @patch("FrontEnd.FrontEnd.get_cname")
    def setUp(self, mock_get_cname):
        mock_requests = MagicMock()
        mock_requests.return_value.json.side_effect = return_side_effect
        mock_requests.return_value.status_code = 200
        mock_requests.return_value.text = 'ssl'
        self.requests = patch.object(requests, 'get', mock_requests)
        self.requests.start()

在一个测试中,我有以下几点:

    @patch("requests.get")
    def test_search_resource(self, mock_get):

        """Test for _search_resource"""

        mock_get.return_value.status_code = 200
        self.fe._search_resource("hulahoop")
        self.assertTrue(mock_get.call_args,
                        call('www.example.com/cdn_resources.json?q=hulahoop',
                             auth=('user', 'password'),
                             timeout=5))
        mock_get.reset_mock()
        mock_get.return_value.status_code = 400
        with self.assertRaises(Exception):
          self.fe._search_resource("hulahoop")

我在这里重复mock\u get,尽管它已经在setUp中修补过,唯一的原因是能够将它分配给不同的status_code。我如何给我的status_code分配不同的值而不需要再次修补requests.get?你知道吗


Tags: selfsearchgetreturnvaluestatussetupcode