专栏首页用户8870853的专栏基于django的单元测试
原创

基于django的单元测试

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类方法(名字固定)在调用整个类测试方法后执行一次
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开头的方法
# 定义 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())

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于django的单元测试

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

    用户8670130
  • django单元测试

    Django支持单元测试,在添加应用时,会自动创建tests.py文件。但在实际应用中,一般针对每个模块添加单元测试,而不是仅仅针对单个应用添加单元测试。所以,...

    用户2936342
  • Django单元测试报错

    https://stackoverflow.com/questions/14186055/django-test-app-error-got-an-error-...

    BigYoung小站
  • Django单元测试简单示例

    对一个功能的验证往往是需要很多多测试用例,可以把测试用例集合在一起执行,这就产生了测试套件TestSuite 的概念,它是用来组装单个测试用例,规定用例的执行的...

    人生不如戏
  • 基于spark源码做单元测试

    之前debug spark源码,是通过写application debug,这个不是基于spark源码本身的调试。

    数据仓库践行者
  • [经验总结] 关于单元测试

    偶然想起@jeffz_cn在twitter上问:“私有方法真的不应该单元测试吗?为什么?我觉得有的组件只是逻辑复杂一些,因此会提取私有方法,并且测试这些私有方法...

    葡萄城控件
  • 两个基于spring的单元测试简单样例

    单元测试,从一定程度上可以看出一个同学达到的层次。但又不完全是,有时可能只是一个思考方式的转变。单元测试有非常多的工具供选择,在java中,junit无疑是比较...

    烂猪皮
  • Django单元测试中Fixtures用法

    在使用单元测试时,有时候需要测试数据库中有数据,这时我们可以使用Django的Fixtures来生成测试数据。

    BigYoung小站
  • 编写 Django 应用单元测试

    我们博客功能越来越来完善了,但这也带来了一个问题,我们不敢轻易地修改已有功能的代码了!

    HelloGitHub
  • 基于 hook 和 gmock 开展单元测试

    单元测试又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函...

    腾讯移动品质中心TMQ
  • Django 博客单元测试:测试评论应用

    先来建立测试文件的目录结构。首先在 comments 应用的目录下建立一个名为 tests 的 Python 包,然后删除 comments 应用下 djang...

    HelloGitHub
  • 关于单元测试(go)

    songleo
  • FastAPI(43)- 基于 pytest + requests 进行单元测试

    https://www.cnblogs.com/poloyy/tag/Pytest/

    小菠萝测试笔记
  • Django单元测试中Fixtures的使用方法

    在使用单元测试时,有时候需要测试数据库中有数据,这时我们可以使用Django的Fixtures来生成测试数据。

    砸漏
  • Django单元测试中Fixtures用法详解

    在使用单元测试时,有时候需要测试数据库中有数据,这时我们可以使用Django的Fixtures来生成测试数据。

    砸漏
  • 基于dbunit进行mybatis DAO层Excel单元测试

    DAO层测试难点 可重复性,每次运行单元测试,得到的数据是重复的 独立性,测试数据与实际数据相互独立 数据库中脏数据预处理 不能给数据库中数据带来变化 DAO层...

    YGingko
  • ​[JUnit] 基于JUnit从零开始认识单元测试

    如果你听说过测试驱动开发(TDD:Test-Driven Development),单元测试就不陌生。单元测试是用来对一个模块、一个函数或者一个类来进行正确性检...

    架构探险之道
  • Django小技巧12: 禁用单元测试的Migrations

    Migrations 无疑是 Django 的一大特色功能,当它在单元测试的时候, 却会加长整个单元测试的时间。特别是你的migrations history特...

    用户1416054
  • 基于QNX的Testbed单元测试环境配置过程

    1.A安装VMware.Workstation.v***.exe1. 本机安装QNX系统:

    小老鼠

扫码关注云+社区

领取腾讯云代金券