gpt4 book ai didi

django - 使用环境变量测试 Django View

转载 作者:行者123 更新时间:2023-12-02 22:39:24 25 4
gpt4 key购买 nike

我开始为依赖于多个环境变量的 Django 应用程序编写测试。当我在 shell 中测试它时,我可以导入 os 并指定变量,我的测试工作得很好。但是,当我将它们放入 tests.py 时,我仍然会遇到关键错误,因为找不到这些变量。这是我的测试结果:

from django.utils import unittest
from django.test.utils import setup_test_environment
from django.test.client import Client
import os

os.environ['a'] = 'a'
os.environ['b'] = 'b'


class ViewTests(unittest.TestCase):
def setUp(self):
setup_test_environment()

def test_login_returning_right_template(self):
""" get / should return login.html template """
c = Client()
resp = c.get('/')
self.assertEqual(resp.templates[0].name, 'login.html')

这是初始化这些变量的错误位置吗?我尝试在 setUp 上执行此操作,但结果相同 - 未找到它们。关于如何在运行测试套件之前初始化环境变量的任何建议?谢谢!卢卡

最佳答案

你不应该在你的观点中依赖 os.envior。如果必须,请在您的 settings.py 中执行

MY_CUSTOM_SETTING = os.environ.get('a', 'default_value')

并且在 View 中使用设置变量:

from django.conf.settings import MY_CUSTOM_SETTING
print MY_CUSTOM_SETTING

然后在你的测试中你可以设置这个设置:

from django.test import TestCase

class MyTestCase(TestCase):

def test_something(self):
with self.settings(MY_CUSTOM_SETTING='a'):
c = Client()
resp = c.get('/')
self.assertEqual(resp.templates[0].name, 'login.html')

关于django - 使用环境变量测试 Django View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10940941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com