Я задам свой вопрос на примере.
Допустим, у меня есть следующие сценарии
params.py:
params_dict = {"a": 1, "b": 2.3, "c": 1.2}
script1.py:
from params import params_dict
def fun1(x, y):
return params_dict[x] * y
script2.py:
from params import params_dict
from script1 import fun1
def fun2(x,y):
return fun1(x)
def fun3(x,y):
return params_dict[x] * y
Это довольно глупый пример, но воспринимайте scripts1
и scripts2
как мои промежуточные обобщенные сценарии, которые зависят от params_dict
,
Я хочу написать отдельный тестовый скрипт test_params.py
, где я могу глобально изменять параметры в пределах params_dict
по всему проекту, чтобы он влиял на script1.py
, script2.py
(и, возможно, на любой другой скрипт, которыйимеет зависимости от params.py
. С этим я могу тестировать различные параметры в моем тестовом скрипте.
Так что мой тестовый скрипт будет выглядеть как test_params.py
:
from scripts2 import fun2
from params import params_dict
import numpy as np
def test(x,y):
for param in np.linspace(2, 4, 10):
params_dict["a"] = param
print(fun2(x,y))
Глупый пример, нов моем текущем проекте мои функции намного сложнее, и я не хочу переписывать все свои промежуточные функции, чтобы включить дополнительный аргумент params_dict
, который анализируется с fun1
до fun2
и в test
- IЯ предпочитаю не иметь функционального контроля params_dict
в моем тестовом скрипте. Есть ли быстрый способ взломать что-нибудь в test_params.py
, чтобы он изменил params_dict
в params.py
и что-нибудь зависящее от него, ради быстроготестирование.