Python模拟全局函数,用于类中使用

2024-09-25 08:38:19 发布

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

我好像不能用Python来嘲笑别人。我有一个全球职能:

一份:

def has_permission(args):
    ret_val = ...get-true-or-false...
    return ret_val

b.py公司:

class MySerializer(HyperlinkedModelSerializer):

     def get_fields():
         fields = super().get_fields()
         for f in :
             if has_permission(...):
                 ret_val[f.name] = fields[f]
         return ret_val

c.py公司:

class CountrySerializer(MySerializer):
    class Meta:
        model = Country

问题:现在我想测试c.py,但我想模拟a.py中定义的、但在b.py中定义的类MySerializer的get-fields-method中调用的具有权限的函数。。。我该怎么做?

我试过这样的事情:

@patch('b.MySerializer.has_permission')

以及

@patch('b.MySerializer.get_fields.has_permission')

以及

@patch('a.has_permission')

但是我所尝试的一切要么就是不起作用,并且仍然执行has_permission,要么python抱怨它找不到属性has_permission

修补完成后:

测试.py

class TestSerializerFields(TestCase):
    @patch(... the above examples....)
    def test_my_country_serializer():
        s = CountrySerializer()
        self..assertTrue(issubclass(my_serializer_fields.MyCharField, type(s.get_fields()['field1'])))

Tags: pyfieldsgetreturn定义def公司val