Как определить глобальную переменную в Python3, которая влияет на промежуточные скрипты для тестирования - PullRequest
0 голосов
/ 01 октября 2019

Я задам свой вопрос на примере.

Допустим, у меня есть следующие сценарии

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 и что-нибудь зависящее от него, ради быстроготестирование.

...