最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Using unittest.Mock in Odoo 17 - Stack Overflow

programmeradmin2浏览0评论

In odoo 17 I need to use unitest.mock to mock the return value of a function The function is called cfdi_cancel. It is located in mymodulename module, inside that module is the 'models' folder, inside that folder is the 'pac_utils' python file, and inside that file is the cfdi_cancel function I am getting the following error

  File "/usr/lib/python3.10/unittest/mock.py", line 1257, in _importer
    thing = __import__(import_path)
ModuleNotFoundError: No module named 'mymodulename'

So, the question is: How can I use unittest.mock to set a return value for that function?

This is my code

from unittest.mock import patch, MagicMock
class TestViixooCFDICancelPayslip(TestPayroll):
    
    @classmethod
    def setUpClass(cls):
        super(TestViixooCFDICancelPayslip, cls).setUpClass()
        cls.payslip.cfdi_uuid = "12345-UUID"
        cls.payslip.cfdi_state = "sent"
        cls.payslip.cfdi_substituted_payslip_id = None

    @patch("mymodulename.models.pac_utils.cfdi_cancel")  # Mock the external cancellation function
    def test_cfdi_cancel_payslip_success(self, mock_cfdi_cancel):
        mock_cfdi_cancel.return_value = {}
        
        self.payslip.cfdi_cancel_payslip("01")
        
        mock_cfdi_cancel.assert_called_once_with(
            context=self.payslip,
            uuid="12345-UUID",
            cancel_reason="01",
            cancel_uuid=None,
        )
        self.assertEqual(self.payslip.cfdi_state, "cancelled")
发布评论

评论列表(0)

  1. 暂无评论