使用vscode进行python的单元测试,提高开发效率

news2024/10/6 10:40:23

背景知识

单元测试在我们的开发过程中非常有必要,它可以验证实现的一个函数是否达到预期。以前在学校写代码时,都是怼一堆代码,然后直接运行,如果报错再一步步调试,这样大部分时间都浪费在调试工作上。工作后发现大家都使用单元测试,这样做其实更规范,也提高了开发的效率。

官方文档:

https://code.visualstudio.com/docs/python/testing

vscode的单元测试

vscode中,我们可以实现对编写的每一个函数进行单元测试,理应每实现一个函数都有一个单元测试的用例,也就是使用下面这个东西。
vscode testing

演示

  1. 新建一个python项目,实现一个冒泡排序算法

    class ArraySort:
        def bubble_sort(self, arr):
            n = len(arr)
            for i in range(n):
                for j in range(0, n-i-1):
                    if arr[j] > arr[j+1]:
                        arr[j], arr[j+1] = arr[j+1], arr[j]
            return arr
    

    这里实现了一个冒泡排序算法,命名为bubble_sort,并放置在src目录的array_sort.py文件中。在这里插入图片描述

  2. 在Testing中配置测试文件
    点击左边栏的Tesing,配置python测试文件
    在这里插入图片描述
    依次选择:unittest -> Root Directory -> *test.py,这里表示使用unittest框架测试,测试文件的格式为*test.py
    在这里插入图片描述
    随后在项目目录中多了一个.vscode文件夹,其中包含一个settings.json文件,在这里可以设置项目的一些配置。

  3. 添加launch.json文件,改文件用于配制项目调试的启动选项。

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name":"Python: Current File",
                "type":"python",
                "request":"launch",
                "program":"${file}",
                "console":"integratedTerminal",
            }
        ]
    }
    
  4. 为了更好的管理测试文件,我们新建一个tests文件夹,用于存放单元测试文件,并在settings.json文件中指定改文件夹。

  5. 在tests目录新建测试文件,注意需要以*test.py结尾,例如array_sort_test.py

  6. array_sort_test.py中编写单元测试用例,需要引入unittest模块,并以test开头命名类和方法
    在这里插入图片描述

    import unittest
    from src.array_sort import ArraySort
    
    array_sort = ArraySort()
    
    class ArraySortTest(unittest.TestCase):
        def test_bubble_sort(self):
            nums = [2, 3, 6, 1, 7, 3, 4]
            print(array_sort.bubble_sort(arr=nums))
    
  7. 在Testing中运行单元测试用例
    在这里插入图片描述

  8. 大功告成!!

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

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

相关文章

【c/c++】curl编译(CMake方式)

一、curl下载 下载地址:curl - Download 进入下载页面,选择Old Releases。 二、CMake下载 这玩意居然有官网,刷新了我的认知,省事啊。 Download | CMake 三、CMake生成VS项目 1、点击【Browse Source ...】,先选择…

蓝牙耳机哪个品牌最好?数码博主整理2023超高性价比蓝牙耳机推荐

近来收到很多私信不知道蓝牙耳机哪个品牌最好,希望我能进行一期蓝牙耳机推荐,考虑到大家的预算不高,我特意花费时间测评了当下主流品牌的热销平价蓝牙耳机,最终整理成了这份超高性价比蓝牙耳机推荐,感兴趣的朋友们可以…

ASN.1-PKCS10

ASN1采用一个个的数据块来描述整个数据结构,每个数据块都有四个部分组成: 1、数据块数据类型标识(一个字节) 数据类型包括简单类型和结构类型。 简单类型是不能再分解类型,如整型(INTERGER)、比特串(BIT STRING)、字…

【Unity】搭建Jenkins打包工作流,远程打热更、构建App

Jenkins是团队协作项目打包常用的工作流,不多做介绍。 Jenkins的部署Unity打包环境还是非常简单的: 工作流程如下: 1. 在Jenkins中添加打包配置参数(如: 版本号, 目标平台等), 参数将以UI的形式显示在Jenkins Web界面以便打包前填写参数&a…

机器人抓取检测——Dex-Net

如今,在各种期刊顶会都能看到平面抓取检测的论文,他们声称能应对多物体堆叠场景,然而实际效果都不尽人意,我认为主要原因有如下几点: 缺乏多物体堆叠场景的抓取数据集。现在最常用的Cornell Grasp Dataset, Jacquard数…

政务网中使用内部华为云

项目按甲方要求,部署在政务网,各种需要在系统中播放的视频存放于内部华为云;然后,系统需要在互联网上访问。 经过一天捣鼓,终于搞定。过程中遇到了许多问题,有nginx代理的,docker域名解析的&am…

FTP Entering Extended Passive Mode

目录 原因 两种方法解决,哪个行用哪种 方法一 方法二 原因 FTP的连接建立有两种模式PORT

10个优秀设计网站盘点

从平面广告设计、包装设计和标志设计到游戏特效,都与我们的生活息息相关。过去,设计师依靠一张图纸和一支笔,但进入数字时代后,设计工作从图纸转移到了电脑上。 各种设计网站和在线设计工具相继衍生,简化了工作步骤&a…

Packet Tracer - 配置扩展 ACL - 场景 1

Packet Tracer - 配置扩展 ACL - 场景 1 拓扑图 地址分配表 设备 接口 IP 地址 子网掩码 默认网关 R1 G0/0 172.22.34.65 255.255.255.224 不适用 G0/1 172.22.34.97 255.255.255.240 不适用 G0/2 172.22.34.1 255.255.255.192 不适用 服务器 NIC 172.22.…

戴尔Alienware x15R1 x15R2原厂win11系统带F12 Support Assist OS Recovery恢复功能

戴尔Alienware x15R1 x15R2原厂win11系统带F12 Support Assist OS Recovery恢复功能 恢复各机型预装系统,带所有dell主题壁纸、dell软件驱动、带戴尔SupportAssist OS Recovery恢复功能,一次性恢复成新机状态,并且以后不用重装系统&#xff…

pyinstaller打包Mediapipe时遇到的问题

使用pyinstaller对python文件打包 打包流程 安装pyinstaller pip install pyinstaller打包文件 pyinstaller test.py 打包完成后会生成一个dist文件夹,打包的文件会在里面,找到test.exe。 pyinstaller -F test.py 加上-F会把所有的文件打包成一个exe,也是在dist文件夹下…

Docker File

DockerFile 是用来构建Docker镜像的构建文件,是由一些列命令和参数构成的脚本。 一、DockerFile 一、在home目录下创建docker-test-volume目录 cd /home mkdir docker-test-volume 二、在home目录下的docker-test-volume目录创建dockerfile1文件 vim dockerfile1…

运营-8.内容分发

内容分发本质要解决的问题包含两点: 1.高效的连接人与信息 2.过滤出有价值的信息,让合适的人看到合适的信息。 常见的内容分发方式 1.编辑分发 2.订阅分发 3.社交分发 4.算法分发 TIPS:根据产品性质、技术实力等因素,不同…

长尾学习(一):Long-Tail Learning via Logit Adjustment

一、背景 这是一篇从损失函数入手解决长尾问题的一种新思路,借鉴基于标签频次的logit adjustment方法,鼓励模型在高频类别与低频类别之间的Margin较大,提出了两种校准方法: 事后校准(post-hoc adjustment)…

tiechui_lesson03_缓冲读写与自定义控制

学习了与应用层通过缓冲区方式的交互&#xff0c;包括读写&#xff0c;自定义控制等。小坑比较多&#xff0c;大部分是是头文件和设置上的错误&#xff0c;跟着视频敲想快进就跳过了一些细节。包括&#xff1a; <windef.h> 头文件的引用 //使用DWORD等类型switch语句…

iOS开发多target

场景 背景:设想一下有一个场景,一个业务分为多种身份,他们大部分功能是相同的,但是也有自己的差异性。这种情况,想要构建出不同身份的APP。你会怎么做??? 当然,你可以拷贝一份代码出来,给项目重新命名。这样做的好处是,他们互相不会冲突,不用去关心是否有逻辑的冲…

Python中变量赋值过程的理解

Python中变量赋值过程的理解 在Python中对变量赋值过程的理解&#xff0c;有助于学习者对Python的变量和所指向的对象之间的指向关系深刻理解&#xff0c;避免编程中多个变量赋值后&#xff0c;对变量结果的不确定&#xff0c;减少赋值过程中疑问和困惑。 1.赋值过程基本过程 …

全文检索-Elasticsearch-进阶检索

文章目录 前言一、SearchAPI1.1 URL 后接参数检索1.2 URL 加请求体检索 二、Query DSL2.1 基本语法格式2.2 匹配查询 match2.3 短语匹配 match_phase2.4 多字段匹配 multi_match2.5 复合查询 bool2.6 过滤 filter2.7 查询 term2.8 聚合 aggregations 三、Mapping3.1 待完成3.2 …

Mybatis动态SQL用法

动态SQL是Mybatis的一大重要特性&#xff0c;它可以完成不同条件下的SQL拼接&#xff0c;降低了因为SQL语句书写中的小错误而造成程序报错的概率&#xff0c;例如拼接时要确保不能忘记添加必要的空格&#xff0c;还要注意去掉列表最后一个列名的逗号&#xff0c;利用动态SQL就可…

Vue项目dialog组件数据项清空

目录 一、重置myParams 二、this.$refs["name"].resetFields() 1、使用v-if 然后渲染, 无效 2、使用nextTick, 数据显示慢一拍, 重新打开dialog才会显示上次输入的内容 三、复盘-最终方法 一、重置myParams <el-form:model"myParams":rules&quo…