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


    发布会签到系统中使用django开发了发布会签到系统,
    本文对该系统进行测试。

    django.test

    django.testDjango框架中的一个模块,提供了用于编写和运行测试的工具和类。

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    总结来说,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')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    测试类徐亚集成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","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):
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
  • 相关阅读:
    【Spring】 Spring中的IoC(控制反转)
    HSTS(HTTP 严格传输安全)
    [附源码]SSM计算机毕业设计亿上汽车在线销售管理系统JAVA
    Linux虚拟化性能损失:原因、评估与优化策略
    IDEA07:Mybatis和Springboot操作数据库
    C. The Third Problem Codeforces Round #804 (Div. 2)
    python基础语法学习--标识符
    关起门来搞开源,做不了开源世界的Leader
    Linux基本指令及周边(第一弹)
    查看虚拟机ip地址
  • 原文地址:https://blog.csdn.net/seanyang_/article/details/132635656