浅谈Django之单元测试

2023-12-05

一、什么是 单元测试

单元测试 是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。如果测试通过则说明我们这个函数或功能能够正常工作,如果失败要么 测试用例 不正确,要么函数有bug需要修复。

二、如何使用单元测试

   from django.test import TestCase
  from app01.models import *
  class AuthorTestCase(TestCase):

# 测试开始前的工作

    def setUp(self):
  auths = Author.objects.all().values()
  print(auths)

# 测试结束的收尾工作

   def tearDown(self):
  Author.objects.filter(name="Steven").delete()
  auths = Author.objects.all().values()
  print(auths)

# 自己定义的测试方法,必须以"test_"开头

    def test_insert_data(self):
  Author.objects.create(name="Steven", hobby="骑行")
  auths = Author.objects.all().values()
  print(auths)

输出:

  <QuerySet []>
  <QuerySet [{'name': 'Steven', 'id': 1, 'hobby': '骑行'}]>
  <QuerySet []>

Django的单元测试实际是基于Python的unittest模块,“setUp”方法是测试开始前的工作,“tearDown”方法是测试结束的收尾动作,这些方法名都是固定的,不允许随意修改,里面内容你也可以不写直接“pass”。“test_insert_data”是我自己定义的测试内容,方法名必须以“test_”开头,可以任意写多个自定义测试方法。

Django单元测试注意点:

1. 对于每一个测试方法都会讲setUp()和tearDown()方法执行一遍

2. Django会在 数据库 中自动新建一个测试数据库来进行数据库方面的测试,默认在测试完成后销毁。所以不用担心它会影响你实际的生成数据库!

三、运行单元测试

1. 测试项目 中所有的应用

python3 manage.py test

2. 测试项目中单独的应用

python3 manage.py test app01

3. 运行项目中某个应用的测试文件中的一个Case

python3 manage.py test app01.test2.AuthorTestCase

4. 运行项目中某个应用的测试文件中的一个Case中的其中一个测试方法

python3 manage.py test app01.test2.AuthorTestCase.test_insert_data

5. 运行单元测试结束时不自动删除测试数据库(保留测试数据库)

python3 manage.py test app01 --keepdb

# 为什么要有这个呢?如果你有很多测试用例,定义了许多测试方法,那么每次在做数据库操作时都会创建数据库、删除数据库,严重影响执行效率。这样我们就保留测试数据库,记得下次执行测试时也要带上--keepdb,不然会提示你删除上一次的测试数据库

四、指定测试数据库的字符集

这是我之前踩过的一个坑,之前用Pycharm写过的一个项目执行测试没有任何问题,过几天重新打开执行单元测试,结果报了字符集错误,然后测试数据库没有自动删除。我经过仔细排查,发现自动创建的测试数据库字符集竟然是“latin1”,我数据库表中有中文,所以直接报错了。知道错误原因就好办了,我查询了官方文档,在setting.py文件中强制设置测试数据库字符集是“UTF8”。

   DATABASES = {
  'default': {
  'ENGINE': 'django.db.backends.mysql',
  'NAME': 'xxx',
  'USER': 'xxx',
  'PASSWORD': 'xxx',
  'HOST': '',
  'PORT': '',
  'TEST': {'CHARSET': 'utf8', },
  }
  }

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浅谈Django之单元测试 的相关文章

  • Docker CLI 实战指南:从基础命令到 Dockerfile 构建和 Docker Compose

    Docker CLI 命令行界面 是一个强大的工具 可让您与 Docker 容器 映像 卷和网络进行交互和管理 它为用户提供了广泛的命令 用于在其开发和生产工作流中创建 运行和管理 Docker 容器和其他 Docker 资源 安装 要开始
  • 软件测试|Pydantic处理时间类型数据

    简介 我们之前介绍过使用 pydantic 验证数据 比如校验数据的格式等 但是在我们的日常工作中 还有一种数据是需要我们验证的 比如时间数据 时间数据不同于字符串 列表等数据 与他们的验证不一样 本文就来为大家介绍一下 pydantic
  • 软件测试|使用Python读写yaml文件,你会了吗?

    简介 YAML YAML Ain t Markup Language 是一种可读的数据序列化格式 它常用于配置文件和数据交换 Python 提供了许多库来处理 YAML 文件 在本文中 我们将探讨如何使用 PyYAML 库来读取和写入 YA
  • 软件测试|pycharm关联GitHub的详细步骤

    简介 GitHub 是全球最大的开源代码托管平台之一 而 PyCharm 是一款强大的 Python 集成开发环境 将两者结合使用 可以提高团队协作和代码管理的效率 本文将详细介绍如何在 PyCharm 中管理 GitHub 账号 包括如何
  • 软件测试|教你如何使用Python绘制出奥运五环旗

    简介 我们之前介绍过使用turtle来绘制正多边形 但是绘制正多边形只是turtle模块最基础的使用 我们可以使用turtle模块绘制出更多不一样的精彩图形 本文就来给大家介绍一个比较简单的turtle绘图实例 绘制奥运五环旗 初始化参数
  • 编程和数值计算平台:MATLAB R2023a(Win/Mac)激活版

    MATLAB R2023a是一款强大的数值计算和科学编程软件 广泛应用于工程 科学和数学领域 win版 https soft macxf com soft 3541 html id MzE5MTM 3D mac版 https www mac
  • 软件测试|Python数据可视化神器——pyecharts教程(九)

    使用pyecharts绘制K线图进阶版 简介 K线图 Kandlestick Chart 又称蜡烛图 是一种用于可视化金融市场价格走势和交易数据的图表类型 它是股票 外汇 期货等金融市场中最常用的技术分析工具之一 可以提供关于价格变动 趋势
  • 盲猜你不懂H5架构和原生架构的区别

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 一篇文章带你了解Python常用自动化测试框架——Pytest

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Jmeter 性能-阶梯式性能指标监听

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 摸爬滚打多年的打工人,总结了三条职场真理,绝不假大空!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 开眼了,自动化测试还能这样用?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 探索自动化测试断言:提升测试效率与质量的关键!

    前言 断言在自动化测试中起着关键的作用 它是验证测试结果是否符合预期的重要手段 如果在自动化测试过程中忽视了断言 那么这个测试就失去了其本质的意义 因为我们无法得知测试结果是否达到了预期的效果 因此 断言在自动化测试中的重要性不言而喻 那么
  • 软件测试/测试开发/全日制/测试管理丨Android WebView 技术原理

    Android WebView是一个内置的组件 允许在Android应用中嵌套显示Web内容 Android WebView的技术原理涉及到使用WebKit引擎来渲染Web内容 并提供一系列API和回调函数 使得开发人员可以控制和定制Web
  • 一文让你了解UI自动化测试

    测试都起什么作用 是项目的保险 但不是项目的救命草 测试无实际产出 但作用远大于实际产出 测试是从项目维度保证质量 而不是测试阶段 UI自动化 下面简称自动化 基于UI进行自动功能测试 以Web端作为例子 一般的UI功能自动化都是基于HTM
  • 外包干了2个月,技术倒退2年。。。

    先说一下自己的情况 本科生 20年通过校招进入深圳某软件公司 干了接近4年的 功能测试 今年国庆 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了3年的女朋
  • 15:00面试,15:06就出来了,问的问题有点变态。。。

    从小厂出来 没想到在另一家公司又寄了 到这家公司开始上班 加班是每天必不可少的 看在钱给的比较多的份上 就不太计较了 没想到9月一纸通知 所有人不准加班 加班费不仅没有了 薪资还要降40 这下搞的饭都吃不起了 还在有个朋友内推我去了一家互联
  • Web自动化测试 —— capability参数配置

    一 capability概述 capability是webdriver支持的标准命令之外的扩展命令 配置信息 配置web驱动属性 如浏览器名称 浏览器平台 结合selenium gird完成分布式 兼容性测试 官网地址 https www
  • 一文让你快速写出高效的软件测试用例

    前言 编写测试用例的目的就是确保测试过程全面高效 有据可查 但要编写出高效的测试用例 需要搞清楚什么是测试用例 以及如何编写出高效的测试用例 接下来将从以下几个部分来进行展开 1 什么是测试用例 2 如何编写测试用例 3 软件测试学习资源分
  • 软件测试面试:还没有自动化测试项目经验,3个项目帮你走入软测职场!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自

随机推荐

  • Stellar Consensus Protocol(SCP)的共识算法

    Stellar Consensus Protocol SCP 是一种用于Stellar网络的共识算法 旨在确保网络中所有节点对账本的一致性 SCP的设计灵感来自于拜占庭将军问题 Byzantine Generals Problem 它采用了
  • (附源码)PHP学生信息管理系统 毕业设计29697

    学生信息管理系统设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径 但是途径的扩展基本上为人们所努力的方向 由于站在的角度存在偏差 人们经常能够获得不同类型信息 这也是技术最为难以攻克的课题 针对学生信息管理系统等问题 对学生信息
  • (附源码)node.js+高校跳蚤市场网站 计算机毕设39420

    node js高校跳蚤市场网站 摘 要 随着互联网的使用越来越广泛 人们开始选择网站购物 但是就目前来说 这些购物网站所面对的对象大多是社会总体人群 在商品选择的问题上 并没有很强的针对性 而且大多数购物系统均需购买者支付邮费 因此不能很好
  • c# asp.net学院学生档案管理系统 计算机毕设源码59121

    摘 要 随着互联网大趋势的到来 社会的方方面面 各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去 而其中最好的方式就是建立网络管理系统 并对其进行信息管理 由于现在网络的发达 学生档案信息通过网络进行管理掀起了热潮 所以针
  • (附源码)基于ssm 太原市公共自行车租赁管理系统-计算机毕设 25530

    ssm 太原市公共自行车租赁管理系统 目 录 摘要 1 绪论 1 1研究意义 1 2公共自行车租赁管理系统现状
  • WebGL笔记:矩阵旋转运算的原理和实现

    矩阵 矩阵 Matrix 是一个按照矩形纵横排列的复数集合 矩阵就像一个矩形的阵盘 通过其中纵横排列的元素 我们可以摆出不同功能的阵法 比如位移矩阵 旋转矩阵 缩放矩阵 在矩阵中的每一行 或者每一列数字构成的集合 可以视之为向量 关于复数
  • springboot房产中介楼盘信息管理系统 计算机毕设源码84855

    摘 要 21世纪的今天 随着社会的不断发展与进步 人们对于信息科学化的认识 已由低层次向高层次发展 由原来的感性认识向理性认识提高 管理工作的重要性已逐渐被人们所认识 科学化的管理 使信息存储达到准确 快速 完善 并能提高工作管理效率 促进
  • (附源码)springboot学生考勤管理系统 毕业设计29554

    目 录 摘要 1 绪论 1 1课题背景及意义 1 2国内外研究现状
  • springboot美食系统 毕业设计-附源码44017

    目 录 摘要 1 绪论 1 1开发意义 1 2研究方法 1
  • (附源码)springboot学生考勤管理系统 毕业设计29554

    目 录 摘要 1 绪论 1 1课题背景及意义 1 2国内外研究现状 1
  • (附源码)python兴农购物网站系统 计算机毕设38256

    Django兴农购物网站系统 摘 要 助农工作是当前我国全面建成小康社会的重点工作 由于我国农村地域广大 贫困人口多 区域差异大 因此 不同区域的扶贫方法也是不一样的 近年来 随着网络的普及 许多农村地区物产丰富 但由于销售渠道不畅等原因
  • (附源码)基于ssm体育馆场地预约系统app-计算机毕设 25510

    ssm体育馆场地预约系统app 摘要 随着互联网的趋势的到来 各行各业都在考虑利用互联网将自己的信息推广出去 最好方式就是建立自己的平台信息 并对其进行管理 随着现在智能手机的普及 人们对于智能手机里面的应用 体育馆场地预约系统app 也在
  • (附源码)springboot美食推荐系统 毕业设计29145

    摘 要 美食作为社会化网络的一项服务 逐渐和网络社区结合成一种互联网美食经济产业链 在快节奏的生活中 相较于传统的美食网站解决大众吃什么的烦恼 服务于用户并展示美食的菜品和价格 一个体系结构清晰且资源丰富的基于微信小程序的美食推荐系统的搭建
  • (附源码)基于SSM动漫展示系统的开发-计算机毕设 25454

    SSM动漫展示系统的开发 摘 要 21世纪 全球网络化 科技在突飞猛进 我们的生活也随之发生了极大的变化 随着计算机的普及 我们社会和经济生活中的各个领域也在发生改变 人们进行信息交流的深度与广度在不断增加 这使得传统的行业模式也要跟随时代
  • 《LeetCode力扣练习》代码随想录——哈希表(三数之和---Java)

    LeetCode力扣练习 代码随想录 哈希表 三数之和 Java 刷题思路来源于 代码随想录 15 三数之和 排序双指针 class Solution public List
  • 算法设计与实现--贪心篇

    贪心算法 贪心算法是一种在每一步选择中都采取当前状态下最优决策的算法 以期望能够通过一系列局部最优的选择达到全局最优 贪心算法的关键是定义好局部最优的选择 并且不回退 即一旦做出了选择 就不能撤销 一般来说 贪心算法适用于满足以下两个条件的
  • 算法设计与实现--动态规划篇

    什么是动态规划算法 动态规划算法是一种求解复杂问题的方法 通过将原问题分解为相对简单的子问题来求解 其基本思想是将待求解的问题分解为若干个子问题 阶段 按顺序求解子阶段 前一子问题的解 为后一子问题的求解提供了有用的信息 在求解任一子问题时
  • 光伏储能虚拟同步发电机并网仿真模型(Simulink仿真实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 目录 1 概述 2 运行结果 3 参考文献 4 Simulink仿真实现 1 概述 光伏储能虚拟同步发电
  • 【无标题】

    Postman是大家最常用的API调试工具 那么有没有一种方法可以不用手动写入接口到Postman 即可进行接口调试操作 今天给大家推荐一款IDEA插件 Apipost Helper 写完代码就可以调试接口并一键生成接口文档 而且还可以根据
  • 浅谈Django之单元测试

    一 什么是 单元测试 单元测试 是用来对一个模块 一个函数或者一个类来进行正确性检验的测试工作 如果测试通过则说明我们这个函数或功能能够正常工作 如果失败要么 测试用例 不正确 要么函数有bug需要修复 二 如何使用单元测试 from dj