django - 如何仅在 Django 测试期间更改环境变量?
问题描述
我有一个扩展 root 的类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")
```
推荐阅读
- php - 如何更改我的 WooCommerce 商店页面标题背景颜色?
- c++ - 在 return 语句中嵌套条件运算符
- mysql - 使用每个帐户的最近日期的所有帐户的值总和
- c# - 如何有效地比较大量照片以找到重复项
- java - GenCollectForAllocation 是什么意思?
- q# - 访问模拟器或跟踪模拟器的调用图
- c# - 如何在 OData 中全局更改 MaxExpansionDepth 设置
- python - 在 matplotlib 中将绘图附加到 HTML 文件
- javascript - 反应:链接到另一个 html 页面上的 div
- c# - 在 EF 核心中搭建脚手架时出现 sql 连接字符串错误?