用私有字段模拟__init__方法

时间:2019-02-06 16:30:30

标签: python mocking pytest

假设我们有一个从DWH中获取数据的类

from utils import fetch_data


class MyClass(self):
    def __init__(self):
        self.__query_name = 'query_name'
        self.__data = None

    @property
    def query_name(self):
        return self.__query_name

    @property
    def data(self):
        if self.__data:
            return self.__data.copy(deep=True)

    def fetch_data(self):
        self.__data = fetch_data(query_name=self.__query_name)

我想用pytest测试fetch_data方法的行为。为此,我需要将__query_name更改为'query_name_test',以免打入生产数据库。你有什么建议吗?

目前我正在这样做,但我希望有更好的方法

my_class = MyClass()
my_class.__dict__['_MyClass__query_name'] = 'query_name_test' 

0 个答案:

没有答案