四十、Django单元测试:PGSQL数据库配置、常用测试工具、DB冲突方案和代码覆盖率实战

单元测试数据库配置

默认测试数据库的名称是将 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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SteveRocket

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值