Django(10)-项目实战-对发布会管理系统进行测试并获取测试覆盖率

发布会签到系统中使用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 TestCase

class 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 os

os.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","[email protected]","admin123456") #创建用户
    def test_add_admin(self):
        user=User.objects.get(username="admin1")#查询
        self.assertEqual(user.username,"admin1")
        self.assertEqual(user.email, "[email protected]")
    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):

猜你喜欢

转载自blog.csdn.net/seanyang_/article/details/132635656