首页 > 解决方案 > 我的项目中的单元测试出了什么问题

问题描述

我有一个电子邮件课程,我需要为其编写一个单元测试课程。
我已经编写了那个 unittest 类,但它没有按预期工作。

实际班级:

    def _get_email_status(self, settings, data):
        # it's a dictionary
        email_param = settings.get_confidential_data() 
        json_content = Task.build_email_content(
            data, email_param.get(0),
            "subject", email_param.get(1),
            "name", email_param.get(2),
            email_param.get(3)
        # this method contains the rest URL and hit that url
        statuscode = EmailService().send_email(email_param.get(4), 
                                               json_content)
        return statuscode

测试类:

    @patch('main.EmailService')
    def test_email(self, mock_service):    
        test_data = {
            'test': 'test'
        }
        confidential_data = {0: "confidential_details",
                             1: "confidential_subject",
                             2: "confidential_name",
                             3: "confidential3",
                             4: "confidential4",
                             5: "confidential5",
                             6: "confidential6"}
        mock_settings = MagicMock()
        mock_settings.get_confidential_data = MagicMock(return_value=confidential_data)
        mock_settings.keys.return_value.__iter__.return_value = confidential_data.keys()
        mock_settings.__getitem__.side_effect = lambda key: confidential_data[0]
        param = mock_settings.get_confidential_data

        mock_object = MagicMock()
        mock_service.return_value = mock_object

        print(param) // here getting the confidential dict value properly
        json_content = Task.build_email_content(
            test_data, 
            dict(mock_settings).get(0), 
            dict(mock_settings).get(1),
            dict(mock_settings).get(2),
            dict(mock_settings).get(3),
            dict(mock_settings).get(4),
            dict(mock_settings).get(5))
        mock_service.send_email(settings, dict(mock_settings).get(5), json_content)
            
        self.assertTrue(mock_service.called)
        print(json_content)

        mock_settings.get_confidential_data.assert_called_once()

但是 mock_settings.get_confidential_data.assert_called_once()self.assertTrue(mock_service.called)给出错误说这些方法没有被调用。

请帮忙。

标签: pythonpython-unittestmagicmock

解决方案


推荐阅读