为了账号安全,请及时绑定邮箱和手机立即绑定

模拟 django 测试 - 为什么这个补丁函数仍然被调用?

模拟 django 测试 - 为什么这个补丁函数仍然被调用?

温温酱 2022-10-18 19:49:07
我正在尝试在我的一个模型中测试一个函数,并尝试使用mock.patch. 无论我尝试什么,它似乎都没有拦截该方法。要测试的模型:应用程序/模型.pyfrom django.db import modelsfrom .utils.storageutils import get_filefrom .utils.datautils import derive_dataClass DataThing(models.Model):    #defined here    def set_data_from_file(self):        data = derive_data(get_file('filepath'))        setattr(self, 'derived_data', data)        self.save()应用程序/实用程序/datautils.pyimport pandas as pddef derive_data(data_from_file):    df = pd.DataFrame('...')    #do stuff with dataframe    return df应用程序/测试/unit_tests/tests_models.pyfrom django.test import TestCaseimport mockfrom app.models import DataThingclass DataThingModelTest(TestCase):    @classmethod    def setUpTestData(cls):      cls.datathing = DataThing    @mock.patch('app.models.derive_data')    def test_set_data_from_file(self, mocked_derive_data):        mocked_derive_data.return_value=('pretend_dataframe')        self.datathing.set_data_from_file()        self.assertEquals(self.datathing.derived_data, 'pretend_dataframe')我希望这会通过。但是,我收到一个错误,因为datathing.set_data_from_file()最终仍在调用utils.storageutils.get_file. 我试过修补,app.utils.datautils.derive_data但有同样的问题。
查看完整描述

1 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

我还需要修补get_file功能


@mock.patch('app.models.get_file')

@mock.patch('app.models.derive_data')

def test_set_data_from_file(self, mocked_derive_data, mocked_ger_file):

    mocked_get_file.return_value=('placeholder')

    mocked_derive_data.return_value=('pretend_dataframe')

    self.datathing.set_data_from_file()

    self.assertEquals(self.datathing.derived_data, 'pretend_dataframe')


查看完整回答
反对 回复 2022-10-18
  • 1 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号