Как изменить переменную окружения только во время тестирования в Django?

У меня есть класс, который расширяет корень TestCase. Я хотел бы установить переменную окружения в каждом из тестов, расширяющих этот класс, чтобы не циклиться на ненужных API-запросах.

Когда я помещаю декоратор патча за пределы класса, он не оказывает никакого эффекта.

Когда я помещаю декоратор патча прямо над setUp, патч длится только в течение всего времени setUp.

import mock, os
from django.test import TestCase


#patching here seems to have no effect
class TCommerceTestCase(TestCase):

  @mock.patch.dict(os.environ, {
    "INSIDE_TEST": "True"
  })
  def setUp(self):
    self.assertEqual(os.environ["INSIDE_TEST"], "True") # works!

  def test_inside_test(self):
    self.assertEqual(os.environ["INSIDE_TEST"], "True") # Fails!

Как исправить переменную окружения в тесте Django (без ручного исправления каждой функции?)

Попробуйте сделать это таким образом:

import mock, os
from django.test import TestCase

class TCommerceTestCase(TestCase):

  @mock.patch.dict(os.environ, {
    "INSIDE_TEST": "True"
  })
  def test_inside_test(self):
    self.assertEqual(os.environ["INSIDE_TEST"], "True")
    ```
Вернуться на верх