自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(271)
  • 收藏
  • 关注

原创 9.测试报告allure​

由一个框架适配器和allure命令行工具组成,是一个流行的开源工具,用于可视化测试运行的结果。它可以以很少甚至零配置的方式添加到您的测试工作流中。它生成的报告可以在任何地方打开,并且任何人都可以阅读,无需深厚的技术知识.

2025-12-21 14:45:44 681

原创 8.logging日志模块

logging是Python标准库中的一个模块,它提供了灵活的日志记录功能。通过logging,开发者可以方便地将日志信息输出到控制台、文件、网络等多种目标,同时支持不同级别的日志记录,以满足不同场景下的需求。# 导入 Python 内置的日志模块# 配置根日志器的基本设置# level=logging.INFO: 设置 Handler(处理器)的最低输出级别为 INFO# 这是第一道过滤:Handler 只会处理 INFO 及以上级别的消息# 获取一个日志记录器对象。

2025-12-21 14:45:00 1074

原创 7.YAML和JSON Schema

YAML文件的后缀名是.yaml或.yml,本着能少写不多写的原则,我们常用的是.yml。yamlYAMLJSON简单标量值整数和浮点数布尔值字符串列表映射(字典)嵌套结构以上语法若短时间内无法掌握,我们也有很多工具可供使用,如json转yamlJson"code": {},},"data": {通过上面的对比可见,从多个方面对JSON数据进行校验。如“type”、“required”、“properties”等以确保其正确性和一致性。接下来我们来了解中的关键词以及作用。json。

2025-12-21 14:44:18 1055

原创 6.接口自动化测试(5)

文件中共享前后置操作,这种结合的方式使得可以在整个测试项目中定义和维护通用的前后置逻辑,使测试代码更加模块化和可维护。如果测试需要动态加载外部数据,或者需要管理复杂的测试资源(如数据库连接、文件操作等),建议使用。会在所有测试函数执行之前自动调用,无论这些测试函数是否显式地引用了该。如果测试场景主要涉及简单的参数传递,且不需要复杂的资源管理,建议使用。需要手动显示调用,在该案例之前我们默认使用的都是。,则在测试函数中需要使用这个名称来引用。,则每个测试函数都会自动调用该。,在某些情况下,也可以结合使用。

2025-12-20 20:02:33 761

原创 5.接口自动化测试(4)

当我们运行测试时,我们希望确保它们能够自我清理,以便它们不会干扰其他测试(同时也避免留下大量测试数据来膨胀系统)。系统,它允许我们将测试的复杂需求简化为更简单和有组织的函数,我们只需要每个函数描述它们所依赖的事物。参数化设计是自动化设计中的一个重要组成部分,它通过定义设计参数和规则,使得设计过程更加灵活和可控。是一种强大的机制,用于提供测试函数所需的资源或上下文。测试脚本中存在的很多重复的代码、公共的数据对象时,使用。,我们可以运行一些代码,并将对象返回给请求的。,它们可以依赖于自己想要的任意数量的。

2025-12-20 19:28:06 653

原创 4.接口自动化测试(3)

在测试框架中,前后置是指在执行测试用例前和测试用例后执行一些额外的操作,这些操作可以用于设置测试环境、准备测试数据等,以确保测试的可靠性。是一个非常流行且高效的Python测试框架,它提供了丰富的功能和灵活的用法,使得编写和运行测试用例变得简单而高效。安装成功后大概是上面这样,也可以检查一下是否安装成功,为了防止不同版本造成的误差,建议下载一样版本的。方法会被调用,这可能会掩盖测试类的实际测试逻辑,并引入额外的副作用,影响测试结果的准确性。结尾的方法作为测试用例。的测试收集机制,测试类中不可以定义。

2025-12-20 16:27:41 1082

原创 3.接口自动化测试(2)

requests库是一个非常流行的HTTP客户端库,用于发送HTTP请求。方法用于发送一个HTTP get请求到指定的URL方法返回一个Response对象,这个对象包含了服务器返回的所有信息。Response属性/方法描述响应状态码r.content字节方式的响应体,会自动解码gzip和deflate压缩r.headers以字典对象存储服务器响应头,若键不存在则返回None中内置的JSON解析方法,将响应体解析为JSON格式(如果响应结果为JSON格式,必须以JSON打印)r.url。

2025-12-20 16:26:53 569

原创 2.接口自动化测试(1)

例如,涉及多种支付方式、多种订单状态转换的订单管理接口,手动测试难以全面覆盖所有场景,自动化测试可以更高效地进行测试。分析请求:明确接口的URL、请求方法(如get、post、PUT、DELETE等)、请求头、请求参数和请求体等信息。例如,涉及资金操作的支付接口,一旦出现问题可能导致严重的经济损失,因此需要进行充分的自动化测试。例如,回归测试中的接口测试,自动化测试可以避免重复手动测试的繁琐和低效,提高测试效率。根据项目的时间、人员安排和接口的复杂度,挑选适合自动化测试的接口。

2025-12-08 21:47:46 833

原创 1.接口测试

其实接口测试很简单,比一般的功能测试还简单,因为功能测试是从页面输入值,然后通过点击按钮或链接等传值给后端,而且功能测试还要测UI、前端交互等功能,但接口测试没有页面,它是通过接口规范文档上的调用地址、请求参数,拼接报文,然后发送请求,检查返回结果,所以它只需测入参和出参就行了,相对来说简单了不少。比如说必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11,总之就是你说怎么来,我就不怎么来。请求之后,都会有一个响应,http本身会有一个状态码,来标示这个请求是否成功,

2025-12-08 21:45:48 888

原创 【Qt】9.信号和槽_信号和槽存在的意义

Qt5在Qt4的基础上提高了信号与槽的灵活性,允许使用任意函数作为槽函数。但如果想方便的编写槽函数,比如在编写函数时连函数名都不想定义,则可以通过Lambda表达式 来达到这个目的。Lambda表达式 是C++11增加的特性。C++11中的Lambda表达式 用于定义并创建匿名的函数对象,以简化编程工作。Lambdacapture:捕获列表params:参数表opt:函数选项ret:返回值类型:函数体lambda被执行了!如果我们往lambda里面写move就会报错因为,lambda。

2025-10-16 23:19:38 983

原创 【Qt】8.信号和槽_自定义信号和槽​

Qt中也允许自定义信号:自定义槽函数,非常关键,开发中大部分情况都是需要自定义槽函数的槽函数,就是用户触发某个操作之后,要进行的业务逻辑自定义信号,比较少见,实际开发中很少会需要自定义信号。信号就对应到用户的某个操作。在GUI,用户能够进行哪些操作,是可以穷举的。Qt内置的信号,基本上已经覆盖到了上述所有可能的用户操作。因此,使用Qt内置的信号,就足以应付大部分的开发场景了。自定义信号,本身代码比较简单的。1、自定义信号函数书写规范自定义信号函数必须写到 “signals” 下;返回值为。

2025-10-16 23:18:53 596

原创 【Qt】7.信号和槽_connect函数用法(2)

如果你传入的第一个参数和第二个参数不匹配,或者第三个参数和第四个参数不匹配(不匹配指的是:2,4参数的函数指针,不是1,3参数的成员函数)这个函数声明,是以前l日版本的Qt的connect函数的声明,以前版本中,传参的写法和现在其实也是有区别的。提供了重载版本,重载版本中,第二个参数和第四个参数成了泛型参数,允许咱们传入任意类型的函数指针了。可以更清晰直观的描述信号和槽的连接关系,另一方面也防止信号或者槽的名字拼写错误导致连接失效。中调用这个函数的时候,就会触发上述自动连接信号槽的规则。

2025-10-16 23:17:54 658

原创 【Qt】7.信号和槽_connect函数用法(1)

信号是由于用户对窗口或控件进行了某些操作,导致窗口或控件产生了某个特定事件,这时 Qt 对应的窗口类会发出某个信号,以此对用户的操作做出反应。中,一定是先关联号信号和槽,然后再触发这个信号,顺序不能颠倒,否则信号就不知道如何处理了(错过了)槽函数与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数被自动执行。这样的函数,把一个信号和一个槽关联起来,后续只要信号触发了,信号的类型:用户进行不同的操作,就可能触发不同的信号。信号的呈现形式就是函数, 也就是说某个事件产生了,

2025-10-15 23:43:32 1025

原创 【Qt】6.Qt对象树

创建文件:mylabel.cpp点击下一步,下一步。可以看出Qt没有把头文件主动包含,我们要手动来添加。在Qt Creator中,可以通过F4切换头文件和对应的.cpp文件。创建自定义的类,最主要的目的,是自定义一个析构函数,在析构函数中,完成打印,方便咱们看到最终的自动销毁对象的效果。我们可以光标放到上,然后点击alt+enter,双击,就会自定义跳转到cpp文件并生成对应基本的析构函数。mylable.hwidget.cpp运行:关闭:日志,有。说明析构函数是执行了。虽然没有手动。

2025-10-15 23:42:43 832

原创 【Qt】5.Qt编程注意事项

Qt偏好驼峰命名法。

2025-10-15 23:42:12 273

原创 【Qt】4.项目文件解析

工程新建好之后,在工程目录列表中有一个后缀为 “.pro” 的文件, “.pro” 文件就是工程文件 (project) ,它是 qmake 自动生成的用于生产 makefile 的配置文件。如图所示:4widgetsQtCreatorqmakemakefileappmakefilelibmakefilevcappvclibsubdirsmakefilemakemakefileCONFIGqmake。

2025-10-15 23:41:16 886

原创 【Qt】3.认识 Qt Creator 界面

在编辑模式下,左边竖排的两个窗口叫做 “边栏”。① 是项目文件管理窗口,② 是打开文件列表窗口。在 QtCreator 菜单 “控件” -------> “Show Left Sidebar”,或者使用快捷键:“Alt + 0” 可以控制边栏的显示和隐藏。边栏里的窗口数目可以增加,边栏子窗口标题栏有一排小按钮,最右边的是关闭按钮,倒数第二个是增加分栏按钮,可以添加多个边栏子窗口。

2025-10-15 23:38:22 1446

原创 【Qt】2.创建第一个QT项目

从 开始菜单 或者 快捷方式 打开 Qt Creator 集成开发环境,启动之后看到类似下面的界面:①:菜单栏。菜单栏一共有 8 个菜单选项,包含了常用的功能菜单:②:模式选择③:构建套件选择器。构建套件选择器包含了目标选择器(Target selector)、运行按钮(Run)、调试按钮(Debug)和构建按钮(Building)四个图标。④:欢迎模式下的窗口工作方式。⑤:定位器。使用定位器来快速定位项目、文件、类、方法、帮助文档以及文件系统。可以使用过滤器来更加准确地定位要查找的结果。

2025-10-15 23:37:34 529

原创 【Qt】1.安装QT

Qt 下载官网:http://download.qt.io/archive/qt/进入官网,按如下图示进行相应的系统版本下载即可。1、打开官网链接,进入如下图示界面;2、选择需要下载的版本(需要科学上网)这里我选择的是:5.14.2先点击5.14,进去后选择5.14.2选择需要下载的版本为windows。

2025-10-15 23:36:53 608

原创 【C++算法】96.BFS解决拓扑排序_火星词典

用哈希表做的时候必须要初始化,遍历一下所有的字符串,每一个字符串找到一个字符后就要把对应的入度更新成0。这题的题意就是,给定外星的一堆词语,让我们来输出对应的字典序。就不能搞定了,需要在之前的双指针里面特殊处理一下。建图,这里不是数字了,用的是字符,可以用。和空比较不合法,直接返回。我们地球上的字典序是从。如何收集信息:用双指针。的,但是外星不一样。

2025-07-31 01:54:07 553

原创 【C++算法】95.BFS解决拓扑排序_课程表II

可以在出队列的时候,加入到结果数组中。这题多了一个找结果。

2025-07-31 01:53:31 254

原创 【C++算法】94.BFS解决拓扑排序_课程表

判断能否完成学习 ,也就是问能否拓扑排序,是否有有向无环图,有向图中是否有环。每个顶点的入度可以用一个数组表示,数组里的数字就是入度。建图很关键,可以在下面的代码里面看到。主要是灵活的使用语言所使用的容器。根据算法流程,灵活建图。

2025-07-31 01:52:53 322

原创 【C++算法】93.BFS解决拓扑排序_拓扑排序简介

一开始的点都是入度为0的点,然后删除入度为0的点对应的边,然后一直重复过程直到结束。在有向无环图中,用顶点来表示一个活动,用边来表示活动的先后顺序的图结构。上面的就是有向无环图,下面就有环了,因为可以从4->5->6->4。找到做事情的先后顺序,拓扑排序的结果可能不是唯一的。入度:有几个顶点指向自己,入度就是几。出度:就是这个顶点有多少条边出去。详细概念可以自己网上找,比较繁琐。借助队列,来一次BFS即可。判断有向图中是否有环。

2025-07-31 01:52:11 304

原创 【C++算法】92.多源BFS_地图分析

可以把陆地放入新矩阵中置为0,然后往外扩一层为1,继续扩展。想找海洋到陆地的距离,也就是陆地到海洋的距离。曼哈顿距离实际上就是走的步数。这题其实和01矩阵是一样的。

2025-07-31 01:51:28 403

原创 【C++算法】91.多源BFS_地图中的最高点

一开始的1的位置我们可以都设置成陆地0,其他地方不写,因为我们要让矩阵中的最高高度值最大,那么我们每次向外扩展一层的时候,扩展的数字是不是也应该尽量大呢?这就是之前的多源BFS,这里的0就是超级源点,然后把这些1加进去,之后再扩展就是2了。

2025-07-31 01:50:47 258

原创 【C++算法】90.多源BFS_飞地的数量

但是可以优化一下,比如第一次判断后来一次BFS看看能否走出去,能走出去就把连通块标记为1,走不出去标记为0。解法一:一个一个判断(超时)也可以不超时,但是有的时候要对某个位置BFS两次。从四条边界的1开始走,往内走来一次搜索,看看能不能走进去。题目其实有点类似于之前的迷宫,遇到边界就可以出去。然后哪一些没有被标记的1就是答案。

2025-07-30 01:16:57 231

原创 【C++算法】89.多源BFS_01 矩阵

所以把0当作起点,1当作终点,从0开始向外扩展,遇到1就把最短路数填进去。解法一:一个位置一个位置求(最差的情况下会非常恐怖)把1当成起点就很难,因为不好更新。解法二:多源BFS+正难则反。

2025-07-30 00:55:22 481

原创 【C++算法】88.多源BFS_多源最短路问题简介

每个源点有一个小人,每个小人走一步,A位置的小人走了一步到了D,E位置,那么他的花费的步数肯定比DE位置的小人花费的路数多,可以舍弃。D,E位置的小人走了一步到B,C,而超级源点A位置的小人走了一步也到B,C。那么接下来的问题就是:怎么找到这个超级源点呢?相当于舍弃了不好的情况,把好情况留下来了。

2025-07-30 00:54:41 208

原创 【C++算法】87.BFS解决最短路径问题_为高尔夫比赛砍树

所以我们要先找到砍树的顺序,弄个二维数组先存一下下标和内容,然后按照内容由小到大排序。但是有个问题,你怎么知道砍树的顺序呢?把所有的最小值求出来然后加起来。砍掉3,从3到5到2到6到4。注意:砍树要从低到高砍。变成若干个迷宫问题了。砍掉1,从1到5到2。砍掉2,从2到5到3。砍掉4,从4到6到5。

2025-07-30 00:53:47 307

原创 【C++算法】86.BFS解决最短路径问题_单词接龙

每次可以挑一位自行改变成’a’-'z’的某一位。每次改变都需要在字典中存在,和之前的最小基因变化问题差不多。之前是从ATCG里面选,现在是’a’-'z’里面选。注意这里求得是单词数不是步数,所以不要忘记+1。

2025-07-30 00:52:26 311

原创 【C++算法】85.BFS解决最短路径问题_最小基因变化

因为每次一步,最终目标也有。先把这个问题转化:图论问题。边权为1的最短路问题。

2025-07-30 00:51:23 341

原创 【C++算法】84.BFS解决最短路径问题_迷宫中离入口最近的出口

注意:自己一开始所在的地方不能作为出口,出口是和边界相邻的空白格所在的地方。实际上就是边权为1的最短路径问题,可以直接BFS。小人走到出口的地方就可以了,不需要走出去迷宫。

2025-07-30 00:50:36 391

原创 【C++算法】83.BFS解决最短路径问题_最短路径问题简介

然后同时把这两个元素弹出去(这里的同时指的是在一个for循环里面依次把B,C弹出去),相当于同时往外面扩充一层,把D,E丢进去。然后同时把这两个元素弹出去,相当于同时往外面扩充一层,(因为从D扩展的时候已经把E加进去了),把F,G丢进去。然后同时把这两个元素弹出去,相当于同时往外面扩充一层,把I丢进去。一个个圈就是点,一条条线就是边,有的时候还会给边加上权值,权值可以认为是边的长度。先把A丢进队列,然后弹出A,把A能去的地方B,C丢进队列。边权为1的最短路问题,可以从起点来一次BFS就可以了。

2025-07-29 23:28:51 256

原创 【C++算法】82.BFS解决FloodFill算法_被围绕的区域

【代码】【C++算法】82.BFS解决FloodFill算法_被围绕的区域。

2025-07-29 23:28:16 556

原创 【C++算法】81.BFS解决FloodFill算法_岛屿的最大面积

当遇到第一个没有遍历过的1的时候,相当于找到一块陆地,同时要搞一个变量count来统计面积。要统计所有连通块的最大面积。

2025-07-29 23:27:10 368

原创 【C++算法】80.BFS解决FloodFill算法_岛屿数量

注意:要防止之前已经被标记过的元素重复标记,防止拐回去。一开始数组里面的初始元素。找完了再去找下一个连通块,同时。,和原始数组一样大,里面存放。,标记已经遍历过的数组。,后面每标记一次就把对应的。直接修改原数组(不推荐)题目答案是这么来的。

2025-07-29 23:26:02 391

原创 【C++算法】79.BFS解决FloodFill算法_图像渲染

【代码】【C++算法】79.BFS解决FloodFill算法_图像渲染。

2025-07-29 23:25:03 307

原创 【C++算法】78.BFS解决FloodFill算法_算法简介

中文:洪水灌溉例如:下面的数组可以看成农田,数字代表深度,下雨了负数的就会被淹没。BFS和DFS实际上就是找出一些性质相同的连通块。DFS(深度优先搜索)例如:我先从右上角开始往下找,找到-12了发现左侧没有符合的,就返回之前的-10,查看-10的左侧有没有符合的。每次找不到的时候,扫描元素的上下左右。BFS(宽度优先搜索)例如:我先从右上角开始往下找,从-1的上下左右找符合的,一层一层的剥开。

2025-07-29 23:14:52 306

原创 【C++算法】77.优先级队列_数据流的中位数

前面一半数存在大根堆(left堆),后面一半数存在小根堆(right堆)已经有一堆有序的数了,就从后往前扫描,把插入的数插进他合适的位置。来一个数就sort一下。通过元素个数找到下标和下标值来求中位数。左边一半元素放到大根堆,堆顶元素就是左边最右侧的元素。右边一半元素放到小根堆,堆顶元素就是右边最左侧的元素。解法一:直接sort(会超时)解法二:插入排序思想(会超时)大小堆来维护数据流中的中位数。

2025-07-29 23:13:40 702

原创 【C++算法】76.优先级队列_前 K 个高频单词

利用堆来解决TopK问题。

2025-07-29 23:12:08 257

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除