如何在不重写“self”的情况下模拟基于类的视图的特定方法?

2024-09-29 19:21:52 发布

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

我正在尝试在django中的TestCase中修补视图的函数。我有一门课:

class BaseView(View):

    def _get_data(self):
        self.attribute = self.fancy_stuff()
        self.thing = self.do_other_stuff()

我需要模仿一下自我属性变成一个空列表,比如:

^{pr2}$

问题是我在一个测试用例中,比如:

class MyTests(TestCase):

    def setUp(self):
        self.view = BaseView
        self.view_instance = self.view()

        def test_stuff(self):
            with patch(self.view) as mock_view:
                ?

我担心self将引用TestCase实例,我不知道如何修补with patch(thing) as name部分。 我可以修补视图或视图实例的方法,但无论哪种方式,我都不知道伪函数如何正确设置视图的attribute和{},而不是测试用例。在


Tags: 函数selfview视图defaswith测试用例
1条回答
网友
1楼 · 发布于 2024-09-29 19:21:52

修补BaseView上的_get_data方法,使其有一个{}来设置视图上适当的实例变量。在

class MyTests(TestCase):

    def setUp(self):
        self.view = BaseView
        with patch.object(self.view, '_get_data', side_effect=view_data_mock):
            self.view_instance = self.view()

    def test_stuff(self):
        self.assertEqual([], self.view_instance.attribute)
        self.assertTrue(self.view_instance.thing)

def view_data_mock(view):
    view.attribute = []
    view.thing = True

相关问题 更多 >

    热门问题