Simulação de Python incorporada 'aberta' em uma classe usando dois arquivos diferentes

Estou tendo problemas para descobrir como simular dois arquivos abertos em uma classe quando ambos usam gerenciadores de contexto. Eu sei como fazer isso para um arquivo gerenciado por contexto usando o módulo simulado como este:

@patch('__builtin__.open')
def test_interface_mapping(self, mock_config):
        m = MagicMock(spec=file)
        handle = m.return_value.__enter__.return_value
        handle.__iter__.return_value = ('aa', 'bb')

Meu problema é como fazer isso quando uma classe abre dois arquivos diferentes na mesma chamada. No meu caso, a turma__init__() pré-carrega os arquivos em dois mapas. Essa classe é usada em outras classes. Desejo simular o carregamento desses dois arquivos para fornecer meus dados de teste, para que as outras classes que usam o objeto IfAddrConfig possam ser testadas no conteúdo do meu arquivo de teste pré-carregado.

Aqui está um exemplo da classe com a qual estou lutando que carrega dois arquivos__init__(), dos quais quero simular carregar o conteúdo do arquivo injetado de teste. getInterfaceMap () é a função que é chamada com freqüência, portanto, não quero que isso carregue e analise os arquivos a cada chamada, portanto, o motivo do pré-carregamento dos mapas em__init__() uma vez.

class IfAddrConfig(object):
    def __init__(self):
        # Initialize the static maps once since they require file operations
        # that we do not want to be calling every time getInterfaceMap() is used
        self.settings_map = self.loadSettings()
        self.config_map = self.loadConfig()

    def loadConfig(self):
        config_map = defaultdict(dict)
        with open(os.path.join('some_path.cfg'), 'r') as stream:
            for line in stream:
                # Parse line and build up config_map entries
        return config_map

    def loadSettings(self):
        settings_map = {}
        with open('another_path.cfg', 'r') as stream:
            for line in stream:
                # Parse line and build up settings_map entries
        return settings_map

    def getInterfaceMap(self, interface):
        # Uses both the settings and config maps to finally create a composite map
        # that is returned to called
        interface_map = {}
        for values in self.config_map.values():
            # Accesss self.settings_map and combine/compare entries with
            # self.config_map values to build new composite mappings that
            # depend on supplied interface value
        return interface_map

questionAnswers(3)

yourAnswerToTheQuestion