当前位置: 首页 > news >正文

【python自动化一】pytest的基础使用

1.pytest简述

pytest‌ 是一个功能强大且灵活的Python测试框架,其主要是用于流程控制,具体用于UI还是接口自动化根据个人需要而定。且其具有丰富插件,使用时较为方便。咱们具体看下方的内容,本文按照使用场景展开,不完全按模块划分,减少割裂感。

2.安装pytest

安装命令(已安装python及pip):

pip install -U pytest  # cmd命令行中直接输入即可

在这里插入图片描述
查看是否已经安装成功:

pytest --version

在这里插入图片描述
参考文档:
链接: pytest文档

3.新建工程

1.新建工程

这里我们使用编译器pycharm直接新建一个工程
在这里插入图片描述
这个工程用的虚拟环境,这里我们为这个工程再安装一次pytest

在这里插入图片描述
当然,要是希望系统装的依赖可以使用,或者其他项目可以共用依赖,可以将这两个选项勾选上,就不用再额外安装了
在这里插入图片描述
这里我们先介绍下pytest的文件、类、方法的命名规范(当然也可以有其他的规则,这个我们后面再说,我们这里只定义一个规则)
1 pytest的测试类文件,文件名小写,且必须以test_开头,多个单词以_连接
2 测试类名必须以Test开头,大驼峰格式
3 测试方法名必须以test_开头,多个单词以_连接,全小写
上述都是针对测试方法和测试类,普通的方法类不要包含test字样,其它规则保持一致即可

2.新建测试类

在这里插入图片描述
如图所示,我们这边新建一个文件test_app1.py,文件中新建了一个测试类TestA,类中创建了4个方法,其中test开头的两个方法是有默认执行按键(向右的三角)的。这就是我们上面说的文件、类、函数的命名规则

3.运行方式

1.主函数运行

我们直接点击下方的主函数运行当前测试文件中的测试方法
在这里插入图片描述
可以看到这边执行了两个测试方法

2.命令行运行

我们在下方命令行中输入

pytest 文件名

在这里插入图片描述
可以看到这里也显示有两个用例通过,但是注意这里是没有print信息打印的哦,我们在pytest后加-s即可打印print信息
在这里插入图片描述

3.使用pytest.ini配置文件运行

pytest.ini文件是整个工程的配置文件,通常创建在工程的根目录下,里面的配置我们在执行工程时会自动调用。
这里我们先介绍下pytest.ini的常用配置:

参数作用
[pytest]用于标志这个文件是pytest的配置文件
addopts命令行参数,多个参数用空格间隔,例如上面的-s就可以加在这个参数后面
testpaths执行用例的范围,如果工程中有多个目录,可以在这里配置
python_files改变默认的文件搜索规则,这里指的就是以test开头的文件名
python_classes改变默认的类名搜索规则,这里指的就是以Test开头的类名
python_functions改变默认的方法名搜索规则,这里指的就是以test开头的方法名
markers用例标记;当用例较多时,可用这个参数分类标记用例,执行时可按标记执行相应的用例

在这里插入图片描述

这里我们在pytest.ini中配置了执行参数-s,然后我们在命令行中直接执行pytest,它会自动带参数执行自动化工程(主函数和命令行执行都会默认带pytest.ini下配置的参数),这里我们没有配置python_files,python_classes,python_functions参数,但是它还是执行了这两个方法,说明它是按照默认规则来执行的。
这里我们也可以修改规则来是适配我们特殊的规则
例如:
我们修改下文件方法的搜索适配规则
在这里插入图片描述
然后我们新建一个文件
在这里插入图片描述
直接输入pytest,查看执行结果,可以看到只执行了两个符合规则的用例
在这里插入图片描述
然后我们再加入testpaths这个参数
在这里插入图片描述
可以看到执行的下面这个文件夹中的用例
在这里插入图片描述
我们虽然可以修改用例的匹配规则,但建议不修改。修改后不一定所有人都能完全按照新规则编写,而且有时候新规则和默认规则会有冲突,不会完全修改默认规则(这里面还是有点坑的,慎踩),所以不建议修改。
然后我们再补充一点命令行执行参数,即加在addopts参数后的
具体可参考这篇文档
https://docs.pytest.org/en/stable/reference/reference.html#command-line-flags

4.流程控制

1.类中定义的setup和teardown方法

和多数自动化测试框架一样,pytest也支持在类中增加setup和teardown方法,直接上个例子

在这里插入图片描述
在类中我添加了方法和类的setup和teardown方法
这里可以看到其执行顺序为

class_setup
method_setup
method1
method_teardown
method_setup
method2
method_teardown
class_teardown

2.用fixture来实现前后置操作

我们先介绍下装饰器@pytest.fixture()
其函数名为:

def fixture(fixture_function: FixtureFunction | None = None,*,scope: _ScopeName | Callable[[str, Config], _ScopeName] = "function",params: Iterable[object] | None = None,autouse: bool = False,ids: Sequence[object | None] | Callable[[Any], object | None] | None = None,name: str | None = None,
)

其中我们主要关注的参数为:

参数作用
scope作用域,Literal[‘session’, ‘package’, ‘module’, ‘class’, ‘function’]
params方法入参,用例可从这个参数里取到入参
autouse是否自动生效
ids可和上方的params配合使用。作为每个参数的标识
name用于对fixture函数的重命名

下面我们介绍各个参数的具体用法

1.scope

scope为该方法的作用范围

取值说明
function函数级,即每个用例前后都会调用
class类级,每个类前后都会调用
module模块级,每个py文件前后都会调用
package包级,每个模块包前后会调用
session会话级,即执行自动化工程前后会调用

这里我们举两个例子:
1、我们scope取值为function,可以看到每个用例前都执行了一次
在这里插入图片描述2、我们scope取值为class,可以看到每个类前都执行了一次,注意:这里有两个方法是不在类下面的,这两个方法之前也执行了fixture方法,说明类外的用例方法前都是执行scope作用域为class的fixture
在这里插入图片描述
3、接下来我们讲一下module、package和class级的,要注意这几个都是会在多个文件前后执行的。上面我们介绍的fixture方法是写在一个py文件中的,在执行时不会作用到其他py文件中去,哪怕scope取值为function和class也一样,我们有时候在每个用例或每个类前后都要执行公共操作,这样每个文件里写一个方法,显然很不方便。这里引入一个文件:

conftest.py

如果我们希望多个py文件可以共享fixture方法,可以将fixture方法放在conftest.py文件中,这样工程中所有的文件都会共享到这些fixture方法
在这里插入图片描述
这里可以看到两个py文件都使用了这些方法
在这里插入图片描述
当然,除了工程根目录下可以建conftest.py文件,其他目录或者包下也可以存放conftest.py,但是要注意作用域范围,一般执行的优先级为(根目录>二级目录>三级目录…)
这里有两点要注意:
1.conftest.py文件名不能写错,写错无法找到fixture方法
2.fixture方法名不能一样,否则会冲突,只执行一个
4.这里我们再讲一下scope为session的
在这里插入图片描述
这里我们看到只在整个工程执行之前执行了一次,平时我们自己执行工程也就会执行一次,比如像一些登录或初始化的动作可以写在这个方法里;但是我们大批量执行自动化时,可能自动化工程分散在多个执行机或多个批次执行时,那这个方法就会执行多次,即每次输入执行pytest时,执行一次session方法

2.autouse

默认值为False,即默认不执行,如果设置为True,则默认调用
可以看到上面举scope的例子的时候,autouse都是赋值的True,这样它就会默认在每个类/方法前自动调用了。
我们不赋值时,就是默认不调用了,如果我们某些方法需要调用呢,可以手动调用;手动调用则直接在用例方法中传入fixture方法名即可(这里为了方便截图,我还是把fixture方法写在同一个py文件中)

在这里插入图片描述
可以看到,这里只有test_2方法前执行了fixture方法。
如果这里的作用域是class呢,同一个class中多次手动调用fixture方法,它只会在第一次调用时执行
在这里插入图片描述
到这里,我们只介绍了如何执行前置步骤,如果我们需要后置步骤,或者前置步骤中需要传值出来呢
要想传值出来,我们有两种方法

1.关键字return

在这里插入图片描述
可以看到我们调用函数名即可获取其返回值
此外,fixture函数可以多层调用,假如我们有两个fixture方法,第二个方法调用第一个方法
在这里插入图片描述
可以看到,第二个方法调用了第一个方法,test_2用例方法又调用了第二个方法,其先执行的是第一个fixture方法,即先执行最内层被调用的方法,一层一层向外执行,如果需要用到这种场景,可以参考

2.关键字yield

yield关键字可以用来返回值和操作后置步骤,yield后跟返回值,yield下面则跟后置步骤

在这里插入图片描述
可以看到,我们这里的fixture作用域是class,且是自动调用的,所以在test_1那里就调用了前置步骤,test_2处调用了其返回值,test_3后即整个class后调用了后置步骤

3.params和ids

params可以向fixture中传入参数,并且可以与ids一起使用,作为每个参数的标识。
fixture将params列表中传入的每一组值都会执行一遍,与此对应的testcase也都会执行多遍,具体调用如下,用request关键字来承接入参,并使用request.param来获取入参
在这里插入图片描述
在这里插入图片描述
可以看到test_2方法执行了3次,每次都输出了从fixture方法中获取的值,并且可以看到我这边params中传入的值不是一个类型的,所以params整个是一个大数组,具体每个数组位是什么类型的值都不影响,且类型不一样也可以。
这时候我们可以再加个ids
在这里插入图片描述
可以看到这里就显示ids了,我们后面集成allure显示报告时也会用到(实际使用看个人需要了,一般场景下可不用)

4.name

fixture方法的重命名,一般我们调用fixture方法时,直接写其方法名即可,如果使用了name参数,则调用时只能使用name后赋值的新函数名,使用原函数名会报错
这里我们重命名一下fixture函数,但是调用时还调用原函数名,就报错找不到这个函数
在这里插入图片描述
我们调用重命名的setup,即可调用成功
在这里插入图片描述

综上所述:fixture方法用得比较多的就是scope和autouse两个参数,其他几个参数请根据各自场景选用。

注:本文纯手打,有疏漏之处可留言指出。后续会继续更新自动化工程的其他部分。

相关文章:

【python自动化一】pytest的基础使用

1.pytest简述 pytest‌ 是一个功能强大且灵活的Python测试框架,其主要是用于流程控制,具体用于UI还是接口自动化根据个人需要而定。且其具有丰富插件,使用时较为方便。咱们具体看下方的内容,本文按照使用场景展开,不完…...

使用 CFD 仿真进行阀门性能分析:第 II 部分

了解如何使用 Ansys Discovery 通过优化模式获得准确的阀门性能结果。 第 II 部分:优化模式下的模拟 阀门的模拟可以在 Explore (探索) 模式和 Refine (优化) 模式下执行。Explore 模式允许快速仿真,在长达…...

Node.js实现WebSocket教程

Node.js实现WebSocket教程 1. WebSocket简介 WebSocket是一种在单个TCP连接上提供全双工通信的协议,允许服务器和客户端之间进行实时、双向通信。本教程将详细讲解如何在Node.js中实现WebSocket。 2. 技术选型 我们将使用ws库来实现WebSocket服务器,…...

使用 Statsmodels 进行统计建模与分析

使用 Statsmodels 进行统计建模与分析 Statsmodels 是 Python 中一个功能强大的库,用于执行统计建模和计量经济学分析。它提供了一系列经典的统计模型和评估方法,涵盖线性回归、时间序列分析和广义线性模型等。 本文将带你深入了解 Statsmodels 的功能…...

【Linux】进程间通信

目录 一、管道 (一)概念 (二)匿名管道 1、概念 2、函数介绍 3、示例代码 4、原理 (三)命名管道 1、概念 2、函数介绍 3、示例代码 4、原理 (四)管道的读写规则 &#x…...

Python 网络爬虫高级教程:分布式爬取与大规模数据处理

经过基础爬虫和进阶爬虫的学习,我们已经掌握了爬虫的基本原理、动态内容处理及反爬机制的应对。然而,当我们面对海量数据或需要高效爬取多个站点时,分布式爬虫和数据存储、处理能力就显得尤为重要。本篇博客将带你迈向网络爬虫的高级阶段&…...

猫爪背后的情感密码

当家中那只可爱的猫咪时不时用它的小爪子轻拍我们时,很多人或许只当作是调皮捣蛋,实则背后大有深意。 猫用爪子打,可能是在向我们发出玩耍的邀约。在猫咪的天性里,捕猎本能根深蒂固。它们在幼年时与同伴的嬉戏打闹,便…...

【自用】管材流转项目前端重部署流程 vue2 webpackage4 vuecli4

一、配置 1.下载项目,使用 IDEA 打开,并配置 Nodejs 它提示我,需要 Node.js,因为 nodejs 14 的 installer 已经官网已经找不到了,使用 fnm 又太麻烦, 所以直接采用在 IDEA 中下载的方式就好了。 2.清除缓…...

关于c的子进程 fork()

fork() 是一个非常重要的系统调用,用于在 Unix-like 操作系统中创建一个新的进程。它会将当前进程(父进程)复制成一个新的进程(子进程)。子进程会从父进程的代码处继续执行,但具有不同的进程 ID。 fork() …...

耀圣控制设备有限公司:优质压滤机阀门的引领者

耀圣控制设备有限公司:优质压滤机阀门的引领者 在压滤机阀门领域,耀圣控制设备有限公司以其卓越的品质和领先的技术,成为了行业内备受瞩目的品牌。 耀圣控制设备有限公司专注于压滤机阀门的研发与生产,凭借着先进的工艺和严格的质…...

【C语言】结构体(四)

本篇重点是typedef关键字 一,是什么? typedef用来定义新的数据类型,通常typedef与结构体的定义配合使用。 简单来说就是取别名 ▶ struct 是用来定义新的数据类型——结构体 ▶ typedef是给数据类型取别名。 二,为什么&#xf…...

面向源代码的软件可信度量模型 T_{na}

面向源代码的软件可信度量模型 T n a T_{na} Tna​ 课程:软件质量分析 作业 可编写下面的java程序: package org.example;public class SourceCodeOrientedModel {public static void main(String[] args) {int total 41;int[] m {9, 22, 9, 5, 7, 1…...

Java11使用JVM同一日志框架启用日志记录

你可以使用-Xlog选项配置或启用Java虚拟机同一日志框架的日志记录。 -Xlog:gc*trace:file/Users/xx/gc-%t.log:time,tags,level,pid,tid,hostname,path:filecount3,filesize10K -Xlog:gc*trace:stdout:time,tags,level,pid,tid,hostname:filecount3,filesize10K -Xlog:gc*trac…...

k8s容器存储接口 CSI 相关知识

容器存储接口 CSI 相关知识 参考: https://blog.csdn.net/lovely_nn/article/details/122880876 https://developer.aliyun.com/article/783464 https://www.cnblogs.com/varden/p/15139819.html存储商需实现 CSI 插件的 NodeGetVolumeStats 接口,Kube…...

JDBC相关

请解释一下 JDBC 是什么? JDBC(Java Database Connectivity)是 Java 语言访问数据库的标准 API。它提供了一套统一的接口,使得 Java 程序能够与各种不同的数据库进行交互。 请说明一下 JDBC 连接池的使用方法和优势。 使用方法…...

Github提交Pull Request教程 Git基础扫盲(零基础易懂)

1 PR是什么? PR,全称Pull Request(拉取请求),是一种非常重要的协作机制,它是 Git 和 GitHub 等代码托管平台中常见的功能,被广泛用于参与社区贡献,从而促进项目的发展。 PR的整个过…...

【计算机网络】实验7:默认路由和特定主机路由以及路由环路问题

实验 7:默认路由和特定主机路由以及路由环路问题 一、 实验目的 了解默认路由以及特定主机路由。 了解静态路由配置错误导致的路由环路问题。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、默认路由以及特定主机路由 (1) 第一步&#xff…...

RK3506 PINCTRL学习

引脚命名规则 Rockchip Pin 的 ID 按照 控制器 (bank) 端口 (port) 索引序号 (pin) 组成。 GPIO(通⽤输⼊输出) 控制器和GPIO控制器数量一致;端口固定A/B/C/D索引序号固定为0/1/2/3/4/5/6/7 每个控制器可以控制32个IO,作为GPIO功…...

NS4828 0.8A 线性同步移动电源管理芯片

1 特性 ● 内置固定 0.8A 的线性充电模式 ● 涓流/恒流/恒压三段式充电,支持 0V 电池充电 ● 充电输入端有防反灌功能,不需要防反灌二极管 ● 0.8A同步升压转换器 ● 同步放电固定 5.1V 输出 ● 双灯充放电 LED 灯指示 ● 支持自动负载检测 ● 双灯充电与…...

重生之学C++篇—算术操作符

一、算术操作符 在写代码的时候,一定会涉及到计算。为了方便运算,C提供了一系列的操作符,其中有一组操作符叫做算术操作符。分别是: 、 - 、 * 、 / 、 %,这些操作符都是双目操作符(有两个操作数&#xff…...

人机交互革命,为智能座舱市场激战注入一针「催化剂」

从AIGC到AGI赋能,智能座舱人机交互体验迎来新范式。 不断训练、迭代的大模型,为智能座舱带来了更全面的感知能力、更准确的认知理解,以及更丰富的交互模态,显著提升了其智能化水平。 “AI大模型的快速应用与迭代,推动…...

《只狼》运行时提示“mfc140u.dll文件缺失”是什么原因?“找不到mfc140u.dll文件”要怎么解决?教你几招轻松搞定

《只狼》运行时提示“mfc140u.dll文件缺失”的科普与解决方案 作为一名软件开发从业者,在游戏开发和维护过程中,我们经常会遇到各种运行时错误和系统报错。今天,我们就来探讨一下《只狼》这款游戏在运行时提示“mfc140u.dll文件缺失”的原因…...

VTK中矩阵vtkMatrix4x4类的介绍和使用

1、矩阵-齐次坐标介绍 常见的点一般是Pt(X,Y,Z),相当于一个13矩阵,而矩阵相乘的话一般是第一个矩阵的列数要等于第二个矩阵的行数。此处需要引入齐次坐标的概念:从广义上讲,齐次坐标就是用n1维向量表示n 维…...

STM32的OTA

STM32的OTA(Over-The-Air)是一种通过无线通信方式,为设备分发新软件、配置甚至更新加密密钥的技术。以下是对STM32 OTA的详细介绍: 一、OTA升级概述 OTA升级允许中心位置向所有用户发送更新,确保每个接收者都无法拒绝…...

【超图】iClient3D for Cesium 以动静结合方式加载WMTS服务

作者:taco 一、问题来源 在最近支持的项目中,我们面临一个挑战:客户需要在前端动态加载高达3亿级别的白模底面数据。这样做的主要原因是客户的数据库会频繁更新,因此我们需要采用动态加载的方式来确保用户界面能够实时反映最新的…...

2.STM32通信接口之SPI通信---SPI实战《精讲》

SPI仅支持一主多从(无应答机制) 参照:《第十一部分》1.STM32通信接口之SPI通信---SPI介绍《精讲》-CSDN博客 在采用一主多从的模式下。从机未被选中,SN1时,从机的MISO会处于高阻态状态,SN0时,M…...

WangEditor — 一个轻量级富文本编辑器

官网:https://www.wangeditor.com/ 介绍 在现代 Web 开发中,富文本编辑器是一个常见的工具,它允许用户输入、编辑和格式化内容。在众多富文本编辑器中,WangEditor 是一个轻量级、高效且易于使用的选择。它支持 HTML 格式的内容编…...

Redis 之持久化

目录 介绍 RDB RDB生成方式 自动触发 手动触发 AOF(append-only file) Redis 4.0 混合持久化 Redis主从工作原理 总结 介绍 Redis提供了两个持久化数据的能力,RDB Snapshot 和 AOF(Append Only FIle)…...

Scala的模式匹配

package hfdobject Test34 {def main(args: Array[String]): Unit {//身份证val id "429005202023210042"// val id "319005202023210042"// val id "119005202023210042"//val id "339005202023210042"//截取前两位val pre id.sub…...

学习笔记052——Spring Boot 自定义 Starter

文章目录 Spring Boot 自定义 Starter1、自定义一个要装载的项目2、创建属性读取类 ServiceProperties3、创建 Service4、创建自动配置类 AutoConfigration5、创建 spring 工程文件6、将项目打成 jar 包7、jar 打包到本地仓库8、配置application.yml Spring Boot 自定义 Starte…...

react学习记录Day2

Materal UI组件 1、Typography 文字铸排 使用文字铸排可以尽可能清晰、高效地展示您的设计和内容。 2、useTranslation 在React应用程序中,国际化(i18n)通常是通过使用专门的库来实现的,其中一个流行的库是react-i18next。这个…...

4. STM32_定时器

概述 什么是定时器: 定时器核心就是计数器,是使用精准的时基,通过硬件的方式,实现定时功能的器件。 定时器的工作原理: 主频时钟CLK通过PSC进行分频后产生定时器时钟TIM CLK,计数器CNT根据TIM CLK的频率…...

JMeter中获取随机数、唯一ID、时间日期(包括当前日期增减)截取指定位数的字符等

在JMeter中,您可以使用内置的函数和一些额外的插件来获取随机数、唯一ID、时间日期以及截取指定位数的字符。以下是一些常用的方法: 获取随机数: 使用__Random函数,您可以在指定的最小值和最大值之间生成一个随机数。例如&#xf…...

Windows下从命令行(Powershell/CMD)发送内容到系统通知中心

Windows下从命令行(Powershell/CMD)发送内容到系统通知中心 01 前言 在平时写脚本的时候,将日志等信息直接输出到控制台固然是最直接的,而如果是一些后台执行的任务,不需要时刻关注运行细节但是又想知道一些大致的情…...

day01-搭建项目环境

1. 项目介绍 1.1 项目亮点 1.2 技术架构 2. 搭建环境 启动老师提供的虚拟机,里面常用的组件是开机启动的。 本地访问一些组件时需要手动敲写ip地址和组件端口,在本地的host文件中添加虚拟机的地址,而且虚拟机中有nginx反向代理&#xff0c…...

使用Tauri创建桌面应用

当前是在 Windows 环境下 1.准备 系统依赖项 Microsoft C 构建工具WebView2 (Windows10 v1803 以上版本不用下载,已经默认安装了) 下载安装 Rust下载安装 Rust 需要重启终端或者系统 重新打开cmd,键入rustc --version,出现 rust 版本号&…...

MySQL 函数创建中的 Err 1418:原因解析与解决指南20241203

🚨 MySQL 函数创建中的 Err 1418:原因解析与解决指南 📖 引言 在使用 MySQL 创建函数时,许多开发者会偶然遇到如下报错: [Err] 1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its…...

GPT 1到4代的演进笔记

1. GPT-1 标题是 Improving Language Understanding by Generative Pre-Training. 发表于 2018.02, 比 bert(发布于 2018.10) 早了半年. 1.1 动机 困难:NLU 任务是多样的, 有 {textual entailment, question answering, semantic similarity assessment, document classifica…...

Zookeeper集群数据是如何同步的?

大家好,我是锋哥。今天分享关于【Zookeeper集群数据是如何同步的?】面试题。希望对大家有帮助; Zookeeper集群数据是如何同步的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Zookeeper集群中的数据同步是通过一种称为ZAB(Zo…...

vue初始化脚手架

Vue初始化脚手架是指使用Vue CLI(Command Line Interface)工具来创建一个Vue项目的基础结构。Vue CLI是Vue.js官方提供的一个脚手架工具,它可以帮助开发者快速搭建Vue项目的基本框架,包括目录结构、配置文件、依赖管理等。 1. 初始…...

可编程网络在分布式深度学习通信瓶颈控制中的应用与未来展望

目录 可编程网络技术解决分布式深度学习通信瓶颈 1. 网络内聚合原语加速分布式深度学习 2. 流聚合与网络内数据处理设计 3. 可编程数据平面加速 4. 降低通信发生的频次 5. 使用大批量进行训练 可编程网络 可编程性定义 在大语言模型中的应用 举例说明: 可编程网络在…...

【教学类-43-25】20241203 数独3宫格的所有可能-使用模版替换(12套样式,空1格-空8格,每套510张,共6120小图)

前期做数独惨宫格的所有排列,共有12套样式,空1格-空8格,每套510张,共6120小图) 【教学类-43-24】20241127 数独3宫格的所有可能(12套样式,空1格-空8格,每套510张,共6120…...

组合问题变式——选数(dfs)

代码随想录听课笔记1——回溯算法-CSDN博客 这是从1&#xff0c;2&#xff0c;3...,n个数字中选出k个数的组合&#xff0c;输出组合的全部可能的代码 //组合&#xff1a;返回1-n中所有个数为k的组合 1,2,3,4 #include<bits/stdc.h> using namespace std; #define MAX 1…...

怎麼解決路由器IP地址衝突?

路由器IP地址衝突通常發生在網路中有兩個設備嘗試使用相同的IP地址時。這種衝突會導致網路連接問題&#xff0c;因為每個設備需要一個唯一的IP地址才能正常通信。 1. 重啟設備 重啟路由器和設備&#xff1a;有時候簡單的重啟可以解決問題&#xff0c;設備重新獲取一個新的IP地…...

【Flink】Flink 作业执行大致流程

Flink 作业执行流程 (Application 模式) 客户端通过 ClusterDescriptor 提交 Application 模式 Sql 任务到服务端&#xff0c;服务端调用作业时 StreamTableEnvironment 使用 FlinkSqlParser 将 SQL 转换为 Operation , StreamTableEnvironment 转换 SQL 过程中使用 CatalogSou…...

mdf文件数据处理之画图(subplots多信号展示同一张图中)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

python基础知识(一)

文章目录 基础语法注释多行语句数字(Number)类型字符串(String)字符串常用方法字符串格式化 import与from...import 基本数据类型多个变量赋值标准数据类型 运算符算术运算符赋值运算符逻辑运算符成员运算符身份运算符 基础语法 注释 python注释可以使用#&#xff0c;或者三个…...

解决 Flutter Dio合并请求多个接口,如果一个接口500,那么导致其他请求不在执行

Flutter Dio如何自定义拦截异常 应用场景 我们一般会统一拦截DioExceptionType 如400&#xff0c;403&#xff0c;500 等错误 但有时候&#xff0c;有个地方合并请求多个接口&#xff0c;如果一个接口500&#xff0c;那么导致其他请求不在执行&#xff0c;因为统一拦截了500&…...

RPC一分钟

概述 微服务治理&#xff1a;Springcloud、Dubbo服务通信&#xff1a;Grpc、Trift Dubbo 参考 Dubbo核心功能&#xff0c;主要提供了&#xff1a;远程方法调用、智能容错和负载均衡、提供服务自动注册、自动发现等高效服务治理功能。 Dubbo协议Dubbo支持dubbo、rmi、http、…...

CentOS 7 docker部署jar包

1、创建Dockerfile vim Dockerfile2、编辑内容 # 基础镜像 FROM openjdk:8 # 作者或联系方式 MAINTAINER wq # test为别名 ADD erp-1.0.jar /test.jar # 容器暴露端口 EXPOSE 8081 ENTRYPOINT ["java","-jar","test.jar"]3、生成镜像 docker …...