【Python】Python单元测试基础

news2024/11/26 20:45:35

文章目录

    • 01-单元测试基础
      • 什么是单元测试
      • 常用的文件结构
      • 运行单元测试

01-单元测试基础

  1. 什么是单元测试
  2. 常用的文件结构
  3. 编写第一个单元测试
  4. 运行单元测试

什么是单元测试

单元测试是指一个自动化的测试:

  1. 用来验证一小段代码(单元)的正确性,例如只测试某个函数写的是否正确
  2. 可以快速执行
  3. 在独立的环境中执行

常用的文件结构

在这里插入图片描述

  1. myprj是项目代码目录 tests是单元测试代码目录,一般来说测试代码与项目代码文件目录结构一样
  2. tests/basictest_calculator.py必须以test_开头,因为测试的工具会寻找所有以test开头的文件,把他们当作单元测试文件运行,这算是一个规范

运行单元测试

myprj.basic中calculator.py代码:

class Calculator:
    def add(self, *args):
        res = 0

        for n in args:
            res += n

        return res

tests.basic中test_calculator.py代码:

import unittest
from myprj.basic.calculator import Calculator
"""
    文件要用"test_"开头
    测试类名要用"Test"开头
"""
class TestCalculator(unittest.TestCase):
    def test_add(self):
        """测试类方法必须用"test_"开头
            通常分为三部分:
                setup
                action
                assert
        """
        # setup
        cal = Calculator()
        excepted_result = 10  # 期望输出为10

        # action
        actual_result = cal.add(2,3,5)

        # assert 判断执行结果与期望结果是否相等,如果不相等,则测试失败
        # 说明代码有问题
        self.assertEqual(excepted_result, actual_result)

为了方便的运行测试:

pip install nose
pip install coverage

# 运行一个测试文件
python -m unittest -v tests.basic.test_calculator
# 运行所有测试文件
nosetests --with-doctest -v tests/basic/
# 统计测试覆盖率
nosetests --with-coverage -v tests/

也可以使用pytest:

pytest --doctest-modules tests/

本文参考:
https://www.bilibili.com/video/BV1SP4y1D7Wd/?spm_id_from=333.999.0.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2035355.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LLM】医疗大语言模型:CareGPT

向AI转型的程序员都关注公众号 机器学习AI算法工程 CareGPT (关怀GPT)是一个医疗大语言模型,同时它集合了数十个公开可用的医疗微调数据集和开放可用的医疗大语言模型,包含LLM的训练、测评、部署等以促进医疗LLM快速发展。 特性: 添加ChatG…

【Datawhale AI 夏令营】动手学大模型应用开发Task1 Baseline 精读

【Datawhale AI 夏令营】动手学大模型应用开发Task1 Baseline 精读 开源大模型文件预览 Baseline 1.导入库 # 导入所需的库 from transformers import AutoTokenizer, AutoModelForCausalLM import torch import streamlit as st2.模型下载 # 源大模型下载 from modelscope…

将电脑打造成私人网盘,支持外网访问之详细操作教程

你想过把自己电脑打造成随时随地访问的网盘吗?就是那种拥有一个属于自己的影音库,不用担心被和谐,随时可以登录访问电脑上的各种文件,相比传统网盘省心又安全。 使用Everything和节点小宝将电脑搭建成私人网盘,可以实现…

嵌入式面经篇三——数据类型

文章目录 前言一、数据类型1、用变量 a 给出下面的定义2、下面的代码输出是什么,为什么?3、写出 float x 与“零值”比较的 if 语句。4、下面代码有什么错误?5、下面代码输出是什么?6、下面代码运行后会是什么现象?7、…

24年日语能力(JLPT)考试报名流程图解

报名方式 搜索JLPT中国教育考试网,在线报名,一般学生党从教育网入口登录,社会人士从公网入口登录 报名时间 N1-N5 8月20日 7:00 - 8月27日14:00 注册时间 8月13日7:00 - 8月27日14:00 报名步骤 阅读报考提示,注册个人信息→…

此处不允许使用 ‘空‘ 类型

说明:受最近看的书《设计模式之美》(小争哥)的影响,最近编码有意将一些业务逻辑写在对象里面,增强封装性。在此记录一次项目启动时的报错,如下: 原因:当你在实体类对象中&#xff0c…

UniApp开发的开源工厂设备管理维护系统

本文来自:UniApp开发的开源工厂设备管理维护系统 - 源码1688 前端小程序演示地址: 后台测试网址: https://shebeiguanli.azheteng.cn/pyswkAWtig.php/addon?refaddtabs 测试账户: admin 测试密码: admin888 前端…

【Python】python泰坦尼克号生存预测 (源码+数据集+PPT+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

黑神话悟空游戏攻略大全 黑神话悟空内存占用多少 国产3A级游戏《黑神话:悟空》评测代码已发 黑神话悟空测试画质130g MacBook可以玩黑神话悟空吗

《黑神话:悟空》的评测代码已向媒体与测评人员发放,评测解禁日期定在8月16日。目前发放的评测代码仅限于PC版,并未涉及PS5版。《黑神话:悟空》将于8月20日发售,登陆PC(Steam/Epic/WeGame)和PS5。玩家将扮演一位“天命人…

Mybatis原理分析

一、总结 MyBatis的基本工作原理就是:先封装SQL,接着调用JDBC操作数据库,最后把数据库返回的表结果封装成Java类。 1. JDBC有四个核心对象: (1)DriverManager,用于注册数据库连接。 &#xf…

基于单片机的智能楼道灯光控制系统设计

摘要:基于单片机的智能楼道灯光控制系统设计由人体感应模块、光照强度检测模块、灯光控制模块、声音传感器模块、声光报警模块等组成。以单片机为核心,通过检测光照强度和红外人体感应相结合,实现了对楼道内灯光的控制,从而达到节…

vue-cli 中 配置 productionSourceMap 为 false 失效?

背景 最近 发现 vuecli 构建的 项目中配置的 productionSourceMap 为 false 后 ,生产代码 还是能够看到 sourceMap 文件 。 原因 生效前提条件 得设置 NODE_ENV 为 production 才会生效! 解决 直接修改生产环境的配置 NODE_ENV 为 production 直接覆…

二.PhotoKit - 相册权限(彻底读懂权限管理)

引言 用户的照片和视频算是用户最私密的数据之一,由于内置的隐私保护功能,APP只有在用户明确授权的前提下才能访问用户的照片库。从iOS14 开始,PhotoKit进一步增强了用户的隐私控制,用户可以选择指定的照片或者视频资源的访问权限…

阿里淘天landing,是结束也是新的开始(附校/社招内推码)

阿里3个多月landing成功,是结束也是新开始,望我们往后一切顺利~ 因为个人发展规划,今年开始找工作,但负责的业务实在繁忙,所以一边面试一边整理资料,每天都在挤海绵。 今年的就业形势着实不乐观&#xff0c…

NPN传感器与汉姆485总线驱动器限位功能使用

传感器输出的引脚电平是由传感器是常闭还是常开决定的;light on和 dark on决定的是触发信号; PNP-NO常开:在没有信号触发时,输出线是悬空的(即VCC电源线和OUT线断开),输出为低电平或不确定状态…

【推荐】免费一年期的SSL证书现在哪里可以申请到

免费一年期的SSL证书虽然不像以前那样普遍易得,但仍有部分途径可以申请到。以下是一些可能的申请渠道: JoySSL 特点:JoySSL是自主品牌SSL证书,安全性和兼容性都有保障。它提供教育版和政务版域名的一年期免费DV单证书。申请流程&…

java中RSA分段加解密及Data must not be longer than异常处理

谈到RSA非对称加密,作为开发的我们第一想到的是安全,几乎不会被破解,以及公钥加密,私钥解密这些。在Java代码中,我们常使用一些现成的工具类如hutool中提供的工具类、网上在线的或者博客上的RSAUtils工具类来实现公钥私…

解决BkwinProject无法编译运行问题

#ifdef _UNICODE // 如果定义了 _UNICODE,这意味着程序正在使用 Unicode 字符集进行编译。 // Unicode 字符集是现代 Windows 应用程序普遍使用的字符编码方式,支持多语言字符。#if defined _M_IX86 // 如果定义了 _M_IX86,这意味着程序正…

【源码交付】数字化产科管理平台:一个集孕期产检、健康宣教、随访、住院、产后42天管理的专科管理系统

项目介绍: 数字化产科管理平台是一个集孕期产检、健康宣教、随访、住院、产后42天管理的专科管理系统,由门诊、住院、数据统计三大功能模块组成,与院内系统HIS/LIS/PACS数据对接,实现以孕妇为中心的全面、高效、多元的全周期服务…