如何创建内置override_settings的Django TestCase子类以加速登录测试?
自定义Django测试类实现快速登录测试
在Django测试场景中,若登录安全性并非测试核心关注点,我们可以通过@override_settings指定PASSWORD_HASHERS为MD5PasswordHasher,大幅提升测试客户端的登录运行速度,原写法如下:
from django.test import TestCase, Client, override_settings @override_settings( PASSWORD_HASHERS = [ "django.contrib.auth.hashers.MD5PasswordHasher" ] ) class Test2(TestCase): # 测试逻辑...
如果每次编写这类测试都要重复配置这个装饰器,确实麻烦。你完全可以创建一个内置该配置的自定义TestCase子类FastLoginTestCase,实现简化调用。
实现步骤
- 在项目的
utils模块(比如myproject/utils.py)中定义这个自定义测试类:
from django.test import TestCase, override_settings # 用装饰器修饰子类 @override_settings( PASSWORD_HASHERS = [ "django.contrib.auth.hashers.MD5PasswordHasher" ] ) class FastLoginTestCase(TestCase): """内置快速登录配置的测试基类""" pass
- 之后在编写测试时,直接继承这个自定义类即可,无需再重复添加装饰器:
from myproject.utils import FastLoginTestCase class Test2(FastLoginTestCase): # 测试逻辑... def test_something(self): # 这里的登录操作会使用MD5哈希器,速度更快 self.client.login(username="testuser", password="testpass") # 后续测试步骤
这样就能实现你想要的简化调用,每次写需要快速登录的测试时,直接继承FastLoginTestCase就自动应用了MD5哈希器的配置。
内容的提问来源于stack exchange,提问作者nigel222
相关产品推荐
相关产品推荐

