单元测试数据库配置
默认测试数据库的名称是将 settings.py 文件中 DATABASES 变量配置的 NAME 值前面加上 test_。
############################################################ PostgreSQL
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', # 数据库引擎
'NAME': 'steverocket', # 数据库名,Django不会帮你创建,需要自己进入数据库创建。
'USER': 'postgres', # 设置的数据库用户名
'PASSWORD': '123456', # 设置的密码
'HOST': 'localhost', # 本地主机或数据库服务器的ip
'PORT': '5432', # 数据库使用的端口
# 设置持久化连接时间
# 如果没有持久化连接,每个请求都会与数据库创建一个连接,直到请求结束关闭连接。每次建立和关闭连接也需要花费一些时间
'CONN_MAX_AGE': 60, # 60秒 不宜设置过大。当并发请求数量很高时,应该设置低一点。反之可以设置高一点。
}
}
工具:标记测试
标记测试就是仅执行测试方法的子集,使用django.test.tag 装饰器,它可以应用在测试方法或者测试类上。
from django.test import TestCase, tag
class TestExample2(TestCase):
def setUp(self) -> None:
logger.warning("create config.....")
Config.objects.create(name_zh="配置1", name_en="config1", conf_value="config value1", remark="配置1内容", conf_type="0")
def tearDown(self) -> None:
logger.warning("test over, clear db")
Config.objects.filter().delete()
# 添加标记1
@tag("tag1")
def test1(self):
config = Config.objects.filter(name_en="config1")
self.assertIsNotNone(config)
self.assertEqual(1, Config.objects.count())
# 添加标记2
@tag("tag2")
def test2(self):
config2 = Config.objects.create(name_zh="配置2", name_en="config2", conf_value="config value2", remark="配置2内容", conf_type="2")
self.assertIsNotNone(config2)
self.assertEqual(2, Config.objects.count())
进行测试标记:
python manage.py test --tag=tagone --tag=tag2 index.tests.ExampleTest