Изменение глобальных переменных в фреймворке unittest для Python
Я работаю над серией модульных тестов на Python, некоторые из которых зависят от значений конфигурационных переменных. Эти переменные хранятся в глобальном конфигурационном файле Python и используются в других модулях. Я хотел бы писать модульные тесты для различных значений конфигурационных переменных, но пока не нашёл способа это сделать.
У меня нет возможности переписывать сигнатуры методов, которые я тестирую.
Вот что я хотел бы достичь:
from my_module import my_function_with_global_var
class TestSomething(self.unittest):
def test_first_case(self):
from config import MY_CONFIG_VARIABLE
MY_CONFIG_VARIABLE = True
self.assertEqual(my_function_with_global_var(), "Первый результат")
def test_second_case(self):
from config import MY_CONFIG_VARIABLE
MY_CONFIG_VARIABLE = False
self.assertEqual(my_function_with_global_var(), "Второй результат")
Спасибо.
Правка: Сделал пример кода более понятным.
1 ответ(ов)
Вы импортируете MY_CONFIG_VARIABLE
в локальную область видимости, а затем сразу же перезаписываете это имя другим объектом. Это не изменит значение в модуле config
. Попробуйте вместо этого:
import config
config.MY_CONFIG_VARIABLE = False
Как протестировать, что функция Python вызывает исключение?
Где размещать юнит-тесты на Python? [закрыто]
Работают ли параметризованные тесты pytest с тестами на основе классов unittest?
Python - объект MagicMock не может быть использован в выражении 'await'
Способ вывести имя теста PyUnit в методе setup()