Мне нужно выполнить издевательство над кодом Python, который выполняется во время импорта модуля.
Например, у меня есть такой код
import configparser
config = configparser.ConfigParser()
config.read('test.ini')
a = float(config['config']['a'])
b = float(config['config']['b'])
c = float(config['config']['c'])
print(a)
print(b)
print(c)
Мне нужен фиктивный "конфиг" для тестирования
import pytest
import mock
import app
@mock.patch('app.configparser.ConfigParser')
def test_config_mock(config_mock):
config_mock.return_value = {'config': { 'a' : 1 } }
Однако эта функция тестирования вызывается после фактического импорта, поэтому мои насмешки не имеют никакого смысла.
Каков правильный способ делать такие вещи?
if __name__ == •"__main__":
. - person jonrsharpe   schedule 29.12.2019app.configparser
, чтобы вы могли импортировать его функции без немедленного выполнения. - person jonrsharpe   schedule 30.12.2019config
вместо этого. Затем код, использующий эту конфигурацию, должен уловить насмешку. - person Mattias   schedule 31.12.2019