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

Python自动化测试如何自动生成测试用例?

汽车软件开发自动化测试攻略

随着软件开发在造车行业中占有越来越重要的地位,敏捷开发的思想在造车领域中也逐渐地被重视起来,随之而来的是整车厂对自动化测试需求越来越强烈。本文结合北汇在自动化测试方面的丰富经验,简单介绍一下实施自动化测试可能需要具备的技能及具体实践流程。

自动化测试城门-Python

要实现完全的自动化测试,我们首先要做的是先实现半自动化测试,即编写自动化测试脚本。俗话说 Life is short,I use Python,Python,作为一种简单易上手的高级编程语言,凭借其“无所不包”的库,成为测试脚本开发的不二之选。这里简单介绍一下,测试脚本开发常用的一些Python标准库。

城门士卒-os库

在编写测试脚本时,不可避免地会遇到对文件路径的获取及编辑,os库里的path函数

可以方便地实现这些操作,如绝对路径获取os.path.abspath()、路径拼接os.path.join()、路径存在判断os.path.exist()等;如果你需要在Python中运行测试工具提供的命令,那么os库的system函数或popen函数

可以让你方便地调用cmd(Windows)或shell(Linux)。

· 城门士卒-sys库

如果你所编写的测试脚本有跨平台运行的需求,那么你可以通过sys库的platform函数

获取脚本的运行环境。根据运行环境的不同,编写不同的批处理命令;sys库中的argv函数,还可以为你的测试脚本提供简单的命令行接口,当你的脚本需要接收外部传递的参数时,你可以通过sys.argv[]方便地获取。而如果你需要编写更复杂更友好的命令行接口,你需要使用Python的另外一个标准库argparse

来实现。

· 城门队长-re库

正则表达式是编写测试脚本的必备技能,因为有时我们会遇到复杂的文本处理,如在工程文件中查找需要修改的配置,并将其修改为我们所需要的内容。此时一般的查找替换函数

就很难实现这个功能,我们只能借助强大的re库

(正则表达式)来解决这个棘手的问题。re库提供的函数有:

re.compile():编译 正则表达式
,生成一个 Pattern 对象;
re.findall():搜索所有满足条件的字符串;
re.match():从第一个字符开始匹配模式;
re.search():搜索第一个满足条件的字符串,查找到第一个停止;
re.sub():替换满足条件的字符串。

在使用re模块时,我们一般先用re.compile()将正则表达式编译生成为一个Pattern对象,然后再基于这个对象进行findall、match等操作,这样既可以提高代码的可读性,也可以提高代码的运行效率。

使用正则表达式进行查找替换是很方便的,但是在很多时候我们需要在匹配的字符串前后添加内容,并且保留匹配的内容,这时普通的查找替换是难以实现的。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

如:希望将hour: minute格式后添加:00,形成hour: minute: seconds这种格式。此时可以采用如下方式来实现:

查找的正则表达式:

(\d:\d)

替换为:

\1\:00

这里,我们在替换的字符中使用\1,来引用正则表达式中第一个分组匹配到的内容,如果正则表达式中有多个分组,可以依次使用\2\3等进行引用,可以使用\0来引用整个正则表达式的内容。

· 小结

在掌握了Python基础语法和这三个标准库后,自动化测试的大门就为我们敞开了。但是想要编写一个可以驱动测试工具进行测试的脚本,我们还需要了解测试工具在headless模式【1】下的接口情况,如果工具提供的接口丰富,可以实现在headless模式下对测试工程进行配置和执行等操作,那么我们的测试脚本

开发工作将会顺利地进行。

但是如果工具提供的headless模式接口有限,无法满足测试脚本的需求,那么进入自动化测试大门后,等待我们的就是另一个棘手的问题:如何对工程文件进行解析与修改。考虑到大部分的工程文件都是XML格式的,因此后续我们就简单介绍一下如何通过Python解析和修改XML文件。

【1】:这里的headless模式是指在不使用工具GUI的情况下,以纯命令行的方式进行工具使用的模式。

自动化测试瓮城——XML文件

· 瓮城守备——XML解析

在Python的标准库中,有专门处理XML文件的库,无需安装第三方库就可以使用Python进行XML文件的解析,但是要想准确地从XML文件中解析出想要的信息,我们首先需要简单了解一下XML的文件结构。如下是一个简单的XML文档。

<bookstore>
<book category="COOKING"><title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> 
</book>
<book category="CHILDREN"><title lang ="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> 
</book>
<book category="WEB"><title lang ="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> 
</book>
</bookstore>

其中Harry Potter元素的结构如下图所示:

图片来源于https://www.w3school.com.cn/xml/xml_tree.asp

在该XML文本中,根元素是 <bookstore>,文档中的所有 <book> 元素都被包含在 <bookstore> 里。<book> 元素有 4 个子元素:<title>、< author>、<year>、<price>。每个子元素都包含一个文本内容,但只有子元素title和元素book拥有属性

我们在解析XML时,一般需要获取的就是元素的属性值以及元素的文本内容。以下我们就简单介绍一下,如何通过python获取元素的属性值及文本内容。

Python的XML库提供了一个通过标签名称获取元素的函数 getElementsByTagName(),该函数返回的是一个包含元素对象的list,通过调用元素对象的attributes方法,我们就可以方便地获取元素的属性值。如,我们可以使用如下命令获取XML文件中第一个标签为title的lang属性值:

root.getElementsByTagName("title")[0].attributes.getNamedItem("lang").nodeValue

获取第一个标签为title的元素的文本信息的代码如下:

root.getElementsByTagName("title")[0].firstChild.data

· 瓮城参将

——XML修改

XML元素的属性和文本内容修改很简单,在上小节中获取对应的元素信息后,直接对其进行赋值即可。但是,修改后的信息保存在XML对象中。要完成对实际XML文件的修改,我们还需要用XML对象中的内容覆盖原有的XML文件,这一步存在很多棘手的问题。

在XML文件中,为了避免元素文本内容中存在的特殊字符引起解析器错误,在文本内容中引入实体引用来替代可能导致错误的字符,如回车&#xA;、双引号&quot;、单引号&apos;。如果使用python的xml.dom.minidom库解析并使用writexml输出XML文件,该库会将这些实体引用转义为其实际字符进行保存。如果不对XML对象中的内容进行处理,导出的XML文件将会存在很多错误。

为了避免这个情况的出现,我们需要使用之前小节介绍的正则表达式将这些字符再替换为其实体引用。这个过程需要我们能熟练使用正则表达式进行文本查找与替换。

除了XML文件中的实体引用外,如果XML文件中存在中文字符,那么还有一个需要注意的事情:不要使用with open as

的方式读写XML文件,要使用open指定文件

的编码为 'utf-8' 的方式,对XML文件进行写入。如下所示:

f = open(self.JenkinsJobXMLPath, 'w', encoding="utf-8")
dom.writexml(f, indent='', addindent='\t', newl='', encoding='utf-8')  
f.close()

· 小结

上述两个问题是修改XML文件时普遍会遇到的问题。解决了这两个问题,我们基本上就可以完美实现XML文件的修改了。此时,我们就可以编写自动化程度更高的测试脚本,然而我们依然无法实现完全的自动化测试,因为我们仍然需要手动地去执行测试脚本。那么,我们该如何实现测试脚本的自动执行呢?这就需要我们打通自动化测试的最后一个关卡,Jenkins。

自动化测试总兵——Jenkins

Jenkins 是一个开源、免费的可扩展持续集成引擎

,主要用于:

持续、自动地构建/测试软件项目;
监控一些定时执行的任务。

为了实现测试脚本的自动化运行,我们需要配置Jenkins Job,使Jenkins在设置的触发条件满足时,自动搭建测试脚本的运行环境,然后执行测试脚本,最后将测试结果发送给相关人员。因此我们需要了解Jenkins的源码管理、构建触发器、构建及邮件通知等设置。

· 总兵的连招1——源码管理

Jenkins服务器最基本的作用是监视版本控制器,当版本库

有新的更改时,检出版本库中的文件,或者,你可以选择只是定期检出版本库中最新的文件。无论哪种方式,Jenkins与版本控制软件

的集成是必不可少的。

Jenkins开箱即用

式支持Git、CVS和SVN,还通过插件与大量其他版本控制工具进行集成,如ClearCase、Perforce、PVCS等等。

不同的版本控制软件在Jenkins端的需要的配置并不相同,有的甚至差异很大。但是只要你熟悉你所使用的版本控制软件,那么在Jenkins端,就可以很容易地对版本库进行配置。

以SVN为例,为了从SVN仓库中获取源码,我们需要提供相应SVN版本库的URL,在完成URL输入后,Jenkins会检查URL的有效性,如果所提供的URL要求身份认证,Jenkins将会自动提示选择相应的凭据以验证账号信息,如下图所示。

默认情况下,Jenkins会将给定的代码库中的文件检出到Jenkins Job的Workspace中。如果你需要将代码库检出到指定的目录中,你可以在Local module directory

中输入你想要的目录名或相对Workspace的路径。

如果你需要从多个SVN版本库中获取文件,可以点击“Add module ...”按钮,来添加别的版本库。

· 总兵的连招2

——构建触发器

常用的构建触发器有周期性构建

SCM轮询构建,两者都是使用相同corn风格语法进行设置,如下图所示。

我们只需要了解corn风格

的语法,就可以方便地进行构建触发器的设置。corn风格的语法包含五个由空格分隔的字段:

MINUTE HOUR DOM MONTH DOW

每个字段使用下面的值:

MINUTE 小时内的分钟数(0-59)
HOUR 一天的小时数(0-23)
DOM 本月的天数(1-31)
MONTH 月份(1-12)
DOW 本周的一天(0-7),其中0和7都是星期日

要为一个字段指定多个值,可以使用以下操作符:

“*”代表一个字段的所有可能的值。如,“* * * * *”表示周期为一分钟;
使用“M-N”定义范围。如,在DOW中“1-5”表示周一到周五;
使用“/”定义范围间隔时间。如,MINUTE字段“*/5”表示每5分钟;
逗号分隔的列表表示有效值。如,MINUTE字段“15,45”表示在每小时的第15和第45分钟运行;

通常,我们只需要在这个字段中写一行,但是对于更复杂的调度配置,我们可能需要写多行。

· 总兵的连招3

——构建

在完成了之前的配置后,Jenkins应该知道在何时从何处获取测试工程及源码。现在我们需要做的事情是,告诉Jenkins在获取测试工程和源码后该如何做。一般情况下,我们会将之前编写的测试脚本放在测试工程的版本库中,或者从专门的测试脚本库中检出到Jenkins Job的Workspace中,因此我们在这里只需要执行编写好的测试脚本即可。

执行脚本的方式可以根据具体脚本的运行环境,选择执行Shell或Windows批处理命令。因此我们需要简单地了解Shell或Windows的常用批处理命令。为了避免编写复杂的批处理命令,我们应尽量把工作放在测试脚本中完成。本文以如下图所示的简单的Windows批处理为例,简单介绍一下构建步骤的编写。

在上图中,有两行命令:

第一行的作用是将目录由初始的Workspace目录切换到Workspace下的Script目录;
第二行的作用是运行Script目录中的测试脚本Script.py,并为该脚本传递一个参数,该参数为Jenkins的环境变量JOB_NAME,即当前Jenkins Job的名称。

这样就完成了对测试脚本的调用。

· 总兵的连招4——邮件通知

自动化测试的一个重要环节,就是将测试结果通知到相关人员,如开发\测试人员,或项目管理人员等。Jenkins对电子邮件提供了开箱即用的支持,我们可以在构建后处理中勾选E-mail Notification,如下图所示。然后输入需要通知的人员邮箱,即可使Jenkins在构建完成后,向指定的人员发送一封友好的电子邮件。

如果你想对邮件内容进行高度定制,那么E-mail Notification就无法满足需求,我们需要安装可编辑的电子邮件插件Editable Email Notification,来实现电子邮件的定制化工作。

在Editable Email Notification中,我们可以用HTML编写电子邮件的内容,并引用Jenkins的环境变量,这样我们就可以在邮件中描述当前Jenkins Job的测试执行概况,让收件人快速地了解当前的测试状态。但是这要求我们对HTML和Jenkins环境变量都有比较深的了解。

有些情况下,我们需要在邮件中执行一些数据提取等复杂工作,比如将控制台输出中的一些数据在邮件中进行展示,这时我们需要借助email-ext-plugin插件提供的Groovy接口,用Groovy编写邮件内容。

总之,Jenkins的邮件通知功能非常强大,我们可以在自动化测试的工作中不断进行探索。

小结

本节简单介绍了Jenkins的传统表单类型的Freestyle Job,然而目前Jenkins的发展方向是 Pipeline Job,Jenkins将Pipeline作为优先开发项目。这就意味着Pipeline在应用程序中是作为实体被设计和支持的,而不是通过在Jenkins中连接一堆任务而形成流水线。Pipeline类型的Job可以通过编程实现,可以实现更复杂构建逻辑和工作流,更重要的是在Pipeline中有专门的用于流水线编程的结构化DSL,其可以在工作空间中轻松地实现文件共享功能。同时Pipeline具有全新的Jenkins可视化界面 ——Blue Ocean,其为Pipeline的每个阶段添加了图形化的展示,如下图所示。

因此我们在熟悉了表单类型的 Freestyle Job后,可以尝试将其转换为Pipeline的Job,当然目前并非所有的Jenkins插件都支持Pipeline,有些老旧的插件还无法支持Pipeline,我们需要根据实际的工作情况进行Jenkins工程类型的选择。

end今天的分享就到处结束了!底赞关注不迷路!

相关文章:

Python自动化测试如何自动生成测试用例?

汽车软件开发自动化测试攻略 随着软件开发在造车行业中占有越来越重要的地位&#xff0c;敏捷开发的思想在造车领域中也逐渐地被重视起来&#xff0c;随之而来的是整车厂对自动化测试需求越来越强烈。本文结合北汇在自动化测试方面的丰富经验&#xff0c;简单介绍一下实施自动…...

椋鸟C语言笔记#27:字符串数字提取(atoi、atol、atoll、atof)

萌新的学习笔记&#xff0c;写错了恳请斧正。 目录 atoi 模拟实现 atol与atoll&#xff08;C99起&#xff09; atof 合法的浮点值 返回值 使用示例 在stdlib.h中还有几个有意思的字符串函数 它们的功能是将字符串开头的数字提取出来 下面我们具体看一看这几个函数吧 …...

Git 命令使用总结

git init: 在当前目录创建一个新的空Git仓库。git clone [url]: 从远程仓库克隆一个项目到本地。git add [file]: 将文件添加到暂存区。git commit -m “message”: 提交暂存区的文件到本地仓库&#xff0c;并添加一条提交信息。git status: 查看当前工作区的状态&#xff08;已…...

Linux常见面试题30题详细答案解析(二)

1. 如何使用Linux中的包管理器进行软件包依赖管理&#xff1f; Linux中的包管理器如apt、yum等可以自动处理软件包的依赖关系。当安装或升级软件包时&#xff0c;包管理器会自动解决软件包的依赖关系&#xff0c;确保所需的库和工具都已经安装。掌握如何使用包管理器进行依赖管…...

Linux查询指定时间点段日志Linux查询指定文件

Linux服务器高效查询日志查询文件 Ⅰ、常用几种日志查询语法Ⅱ、常用几种查询语法 Ⅰ、常用几种日志查询语法 #查询某日志前xx行日志 head -n 行数 日志文件名 #查询某日志后xx行日志 tail -n 行数 日志文件名 #查询固定时间点日志&#xff08;前提是这个时间点确实有日志输出…...

2023年华为HCIA认证H12-811题库讲解

在VRP平台上&#xff0c;可以通过下面哪种方式返回到上一条历史命令&#xff1f;&#xff08; &#xff09; A、Ctr1U B、Ctr1P C、左光标 D、上光标 试题答案&#xff1a;BD 试题解析&#xff1a;在VRP系统中&#xff0c;ctrlU为自定义快捷键&#xff0c;ct…...

MacOS上配置Jenkins开机自启动

之前文章有写过&#xff0c;如何在Windows环境下&#xff0c;通过vbsbat脚本的组合拳实现Jenkins的开机自启动&#xff0c;最近换了电脑&#xff0c;又要搭建Jenkins了&#xff0c;顺带整理分享下MacOS上配置Jenkins开机自启动的方法。 具体配置步骤&#xff1a; 打开终端应用…...

指针相关知识(入门)

通过前面的学习&#xff0c;我们已经对c语言有了一个初步的认识 接下来&#xff0c;我们继续学习。进入下一个阶段&#xff0c;指针。这个部分的知识较多&#xff0c;可能学习起来有些吃力&#xff0c;但是&#xff0c;从简到难&#xff0c;我们慢慢学习。 一.指针的概念 导入…...

我的NPI项目之Android 安全系列 -- Android Strongbox 初识

从Android9(Pie)开始,Google强烈建议支持Strongbox. 具体描述如下: 一直到目前的Android14. 对应的内容也一并贴出来: 说人话就是Android开始通过独立于主SoC的单元进行密钥存储了。 通常&#xff0c;这样的单元就是我们通常称作的Secure Element&#xff08;SE&#xff09;&am…...

3、Kafka 线上集群部署方案怎么做?

文章目录 1、操作系统的选择1.1、I/O 模型的使用1.2、数据网络传输效率1.3、社区支持度 2、磁盘的选择3、磁盘容量的规划3.1、举例思考本问题&#xff1a;3.2、计算一下&#xff1a;3.3、规划磁盘容量时你需要考虑下面这几个元素&#xff1a; 4、带宽规划4.1、计算 总结 1、操作…...

【Oracle】常用数据库sql记录

文章目录 1、获取指定日期所在年份2、获取指定日期所在月份3、获取指定日期去年同期日期4、获取指定日期所在年份的总天数5、获取年初到指定日期的天数6、除法运算7、递归查询8、REPLACE函数9、DECODE 函数10、聚合函数11、窗口函数11.1 ROW_NUMBER函数11.2 RANK函数11.3 LEAD …...

在线监控网址源码/ 网站监控工具源码/ 网站监控系统源码/定时任务/网站网址URL状态监控神器

源码介绍&#xff1a; 在线监控网址源码、 网站监控工具源码&#xff0c;它作为网站监控系统源码&#xff0c;有定时任务&#xff0c;支持卡密充值&#xff0c;是网站网址URL状态监控神器。让数据库监控更加简单和专业。远程云中监控、实时邮件告警、丰富的指标和图表、分析和…...

【Mysql】myisam和innodb的区别?

0 回答 myisam引擎是5.1版本之前的默认引擎,支持全文检索、压缩、空间函数等,但是不支持事务和行级锁,所以一般用于有大量查询少量插入的场景来使用,而且myisam不支持外键,并且索引和数据是分开存储的。innodb是基于聚簇索引建立的,和myisam相反它支持事务、外键,并且通…...

vue 集成行政区域选择插件region和数据回显

故事&#xff1a;最近&#xff0c;项目需要进行行政区域围栏的绘制&#xff0c;由于老旧项目是利用js保存全国行政区域地址和编码&#xff0c;在选择器select进行匹配显示&#xff0c;但此方法复杂&#xff0c;因此选择集成区域插件region 步骤一&#xff1a;用命令安装region…...

The LINQ expression “xxx“ could not be translated

错误示例&#xff1a; var A B .GroupBy(item > item.id) .Select(groupedList > new { PlannerId groupedList.Key, RxList groupedList }); 解决方案&#xff1a; var A B .GroupBy(item > item.id) .Select(groupedList > new { PlannerId groupedList.…...

ubuntu下搜索文件的几种方法

一、whereis命令&#xff1a; whereis命令只能用于程序名的搜索&#xff0c;而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数&#xff0c;则返回所有信息。 whereis的命令格式&#xff1a; whereis [-bmsu] [BMS 目录名 -f ] 文…...

openCV图像SIFT特征

SIFT&#xff08;尺度不变特征变换&#xff09;是一种用于计算图像局部特征的算法&#xff0c;它对图像的尺度、旋转和亮度变化具有不变性。SIFT特征在计算机视觉领域被广泛应用于目标识别、图像配准、三维重建等任务中。 SIFT特征的计算包括以下几个步骤&#xff1a; 尺度空…...

黑豹程序员-axios+springmvc传递数组

问题 奇怪的现象&#xff0c;axios在往后台传递数组时&#xff0c;springmvc竟然接收不到 解决 尝试多次无果&#xff0c;突然看一篇文章写vue中的数组不是真正的数组需要强转转化JSON.stringify 将信将疑下测试了一把&#xff0c;还真的传递成功了。 不光要JSON.stringify…...

34.用过JavaConfig方式的spring配置吗?它是如何替代xml的?

用过JavaConfig方式的spring配置吗?它是如何替代xml的? 基于Java的配置,允许你在少量的Java注解的帮助下,进行你的大部分Spring配置而非通过XML文件。 以@Configuration 注解为例,它用来标记类可以当做一个bean的定义,被Spring IOC容器使用。 另一个例子是@Bean注解,它…...

解析Python的Lambda函数:【理解】与【运用】

目录 引言理解Lambda函数定义语法Lambda函数的特点 Lambda函数使用场景举例小结结束语 引言 在Python编程语言中&#xff0c;Lambda函数是一种特殊的函数形式&#xff0c;它以【简洁】、【快速】和【轻量级】而闻名。Lambda函数在需要短小函数的地方非常有用&#xff0c;比如在…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...