在发布会签到系统中使用django开发了发布会签到系统,
本文对该系统进行测试。
django.test
django.test
是Django框架中的一个模块,提供了用于编写和运行测试的工具和类。
django.test
模块包含了一些用于测试的类和函数,如:
-
TestCase
:这是一个基类,用于编写Django测试用例。继承自unittest.TestCase
,提供了一些额外的功能和方法,用于处理Django应用程序的测试环境。 -
SimpleTestCase
:这是一个更轻量级的测试基类,适用于没有数据库或网络访问的简单测试场景。 -
Client
:这是一个模拟HTTP请求的客户端类,用于在测试中模拟用户请求和验证响应结果。 -
RequestFactory
:这是一个用于创建HTTP请求对象的工厂类,用于在测试中生成HTTP请求实例。 -
其他辅助函数和装饰器,如
override_settings
用于在测试过程中临时覆盖Django设置,tag
用于给测试用例添加标签等。
通过使用django.test
模块,你可以编写单元测试、集成测试和功能测试等来验证和确保Django应用程序的正确性和稳定性。
下面是一个简单的示例代码,演示如何使用django.test
模块编写一个测试用例类:
from django.test import TestCaseclass MyTestCase(TestCase):def test_my_function(self):# 编写测试逻辑result = my_function()self.assertEqual(result, expected_result)
总结来说,django.test
模块提供了一套用于编写和运行Django应用程序测试的工具和类,能够帮助开发者验证和确保应用程序的正确性和稳定性。
测试index视图
import os,django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "guest.settings")
import django
django.setup()
from django.test import TestCase
class IndexPageTest(TestCase):def test_index_page_renders_index_template(self):response = self.client.get("/index/")self.assertEqual(response.status_code,200)self.assertTemplateUsed(response,'index.html')
测试类徐亚集成TestCase,使用client实例可以请求get和post HTTP请求
获取response后断言状态码,
并使用assertTemplateUsed方法断言该请求是否使用index.html模板
测试login视图
import osos.environ.setdefault("DJANGO_SETTINGS_MODULE", "guest.settings")from django.contrib.auth.models import User
from django.test import TestCase
class LoginActionTest(TestCase):def setUp(self) -> None:User.objects.create_user("admin1","admin@mail.com","admin123456") #创建用户def test_add_admin(self):user=User.objects.get(username="admin1")#查询self.assertEqual(user.username,"admin1")self.assertEqual(user.email, "admin@mail.com")def test_login_action_username_password_null(self):"""测试密码为空"""test_data={'username':'','password':''}response=self.client.post('/login/',data=test_data) #使用self的client可以对urls进行测试self.assertEqual(response.status_code,200)self.assertIn(b"username or password error",response.content)def test_error_password(self):