前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于django的单元测试

基于django的单元测试

作者头像
用户8670130
修改2021-08-31 11:08:46
7880
修改2021-08-31 11:08:46
举报

1.【知道】认识单元测试

  • 单元测试:测类、方法、函数,测试最小单位
  • 由于django的特殊性,通过接口测单元,代码逻辑都放在类视图中
  • 单元测试好处
    • 消灭低级错误
    • 快速定位bug(有些分支走不到,通过单元测试提前测出问题)
    • 提高代码质量(测试后顺便优化代码)

2.【掌握】编写和运行django的单元测试

  • django环境
    • 数据库编码
    • 数据库用户权限(需要建临时数据库、删临时数据库)
  • 每个应用,自带tests.py
    • 类,继承django.test.TestCase
    • 前置、后置方法
    • test开头的测试用例
  • 集成在django的项目文件里,更多是开发人员写django自动的测试
  • 运行
    • 进入manage.py目录
    • 命令
      • python manage.py test 指定目录下的某个文件

3. TestCase类

3.1【知道】前后置方法运行特点

django.test.TestCase类主要由前、后置处理方法test开头的方法组成

  • test开头的方法 是编写了测试逻辑的用例
  • setUp方法 (名字固定)在每一个测试方法执行之前被调用
  • tearDown方法(名字固定) 在每一个测试方法执行之前被调用
  • setUpClass类方法(名字固定)在整个类运行前执行只执行一次
  • tearDownClass类方法(名字固定)在调用整个类测试方法后执行一次
代码语言:javascript
复制
from django.test import TestCase
​
class MyTest(TestCase):
    @classmethod
    def setUpClass(cls):
        print('setUpClass')
​
    @classmethod
    def tearDownClass(cls):
        print('tearDownClass')
​
    def setUp(self) -> None:
        print('setUp')
​
    def tearDown(self) -> None:
        print('tearDown')
​
    def test_xxx(self):
        print('测试用例1')
​
    def test_yyy(self):
        print('测试用例2')
        
# python manage.py test meiduo_mall.apps.users.test_code

3.2【掌握】setUpClass 和 tearDownClass应用场景

  • 写测试代码:放在test开头的方法
代码语言:javascript
复制
# 定义 setUpClass: 用户登录
# 定义 tearDownClass: 用户退出
# 定义测试方法:获取用户信息、获取用户浏览器记录、获取用户地址列表
​
from django.test import TestCase
import requests
​
​
class MyTest(TestCase):
    s = None # 类属性
​
    @classmethod
    def setUpClass(cls):
        print('setUpClass')
​
        user_info = {
            "username": "mike123",
            "password": "chuanzhi12345",
            "remembered": True
        }
​
        # 1. 创建requests.Session()对象
        # cls.s类属性的s对象
        cls.s = requests.Session()
​
        # 登陆
        # json以json格式发送请求
        r = cls.s.post('http://127.0.0.1:8000/login/', json=user_info)
        print('登陆结果=', r.json())
​
    @classmethod
    def tearDownClass(cls):
        print('tearDownClass')
        r = cls.s.delete('http://127.0.0.1:8000/logout/')
        print('登出结果=', r.json())
​
​
    def test_1_info(self):
        r = self.s.get('http://127.0.0.1:8000/info/')
        print('用户结果=', r.json())
​
    def test_2_browse_histories(self):
        r = self.s.get('http://127.0.0.1:8000/browse_histories/')
        print('浏览记录结果=', r.json())
​
    def test_2_browse_addresses(self):
        r = self.s.get('http://127.0.0.1:8000/addresses/')
        print('地址结果=', r.json())

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.【知道】认识单元测试
  • 2.【掌握】编写和运行django的单元测试
  • 3. TestCase类
  • 3.1【知道】前后置方法运行特点
  • 3.2【掌握】setUpClass 和 tearDownClass应用场景
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档