Pytest+Allure+Excel接口自动化测试框架实战
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快
1. Allure 简介
简介
Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具,它不仅以 Web 的方式展示了简介的测试结果,而且允许参与开发过程的每个人可以从日常执行的测试中,最大限度地提取有用信息。
Allure 是由 Java 语言开发的,支持 Pytest,JaveScript、PHP、Ruby 等。
- 从 DEV/QA 的角度来看,Allure 提供了详尽的测试报告,比如简化了常见缺陷的统计;失败的测试可以分为 bug 和被中断的测试;还可以配置日志、步骤、fixture、附件、计时、执行历史;以及与 TMS、BUG 管理系统、Jenkins 集成等。所以,通过以上配置,所有负责的开发人员和测试人员可以尽可能地掌握测试信息。
- 从管理者的角度来看,Allure 提供了一个清晰的“大图”,即 High Level 的统计报告,其中包括已覆盖的特性、缺陷聚集的位置、执行时间轴的外观以及许多其他方便的事情。Allure 的模块化和可扩展性保证了你总是能够对某些东西进行微调,使得 Allure 更适合你。
那么下面就来说说如何使报告更加详细的显示我们需要的信息,以及 Allure 与 Jenkins 的集成。
安装(Windows/Mac 通用安装方法)
下载地址:https://github.com/allure-framework/allure2/releases,下载所需版本的 zip 包。
安装:
- 解压 —> 进入 bin 目录 —> 运行 allure.bat
- 把 bin 目录加入 Path 环境变量
- 配合 pytest,使用 allure2 生成更加精美的测试报告:pip install allure-pytest
运行方法
在测试执行期间收集结果
pytest [测试文件] -s -q --alluredir=./result/ --clean-alluredir
- -s:表示将执行成功的案例日志打印出来
- -q:若跟文件执行路径则代表只需要执行的文件
- --alluredir:指定存储测试结果的路径(若目录不存在则会新建)
- --clean-alluredir:清除历史结果数据
查看测试报告
方式一:用于在本地渲染后对外展示结果
allure serve ./result/
方式二:用于在本地渲染和查看结果
# 生成报告
allure generate ./result/ -o ./report/ --clean # 注意:覆盖路径加 --clean
# 打开报告
allure open -h 127.0.0.1 -p 8883 ./report/
2. Allure 常用特性
场景:
- 希望在报告中看到测试功能,子功能或场景,测试步骤,包括测试附加信息。
解决:
- import allure
- @allure.feature('功能名称')
- @allure.story('子功能名称')
- @allure.title('测试用例名称')
- @allure.step('步骤细节')
- @allure.description('测试用例描述')
- @allure.attach('具体文本信息'):需要附加的信息,可以是数据,文本,图片,视频,网页
- 如果只测试登录功能运行的时候可以加限制过滤,如:pytest 文件名 --allure_features '购物车功能' --allure_stories '加入购物车'
@alllure.feature() 与 @allure.store() 的关系
feature 相当于一个大的功能或模块。将 case 分类到某个 feature 中,并在报告中的 behaviors 中显示,相当于 testsuite。
story 相当于分支功能/模块,属于 feature 之下的结构,并在报告中的 features 中显示,相当于 testcase。
feature 与 story 类似于父子关系。
@allure.step() 与 with allure.step() 的区别
测试过程中每个步骤,一般放在具体逻辑方法中。
可以放在关键步骤中,在报告中显示。
在 App、Web 自动化测试当中,建议每切换到一个新的页面当做一个 step。
用法:
- @allure.step():只能以装饰器的形式放在类或者方法上。
- with allure.step():可以放在测试用例方法里面,但测试步骤的代码需要被该语句包含。
给测试用例划分优先级
场景:
通常测试有冒烟测试、回归测试、线上验证测试等,那么就需要按照重要性级别来分别执行,比如上线时要把主流程和重要模块都跑一遍。
解决:
- 通过附加 pytest.mark 标记描述
- 通过 allure.feature、allure.story 标记描述
- 通过 allure.severity 直接标记用例级别
根据测试用例的重要性划分测试用例等级,如果没指定等级,默认为 NORMAL 级别:
- BLOCKER:阻塞缺陷(功能未实现,无法下一步)
- CRITICAL:严重缺陷(功能点缺失)
- NORMAL:一般缺陷(边界情况,格式错误)
- MINOR:次要缺陷(界面错误与ui需求不符)
- TRIVIAL:轻微缺陷(必须项无提示,或者提示不规范)
步骤:
- 在方法、函数和类上面加:@allure.severity(allure.severity_level.TRIVIAL)
- 指定执行对应级别的用例:pytest -s -v 文件名 --allure-severities normal, critical
给 Allure 测试报告添加内容(图片、附件、文本、截图、HTML 等)
场景:
前端自动化测试经常需要附加图片或 html,比如在适当的地方、适当的时机截图等。
解决:
@allure.attach() 显示许多不同类型的提供的附件,可以补充测试、步骤或测试结果。
步骤:
在测试报告里附加网页:
- 格式:allure.attach(body(内容), name, attachment_typeextension)
- 示例:allure.attach('<head>/head><body>首页</body>', '这是错误页的结果信息', allure.attachment_type.HTML)
在测试报告里附加图片:
- 格式:allure.attach.file(source, name, attachment_type, extension)
- 示例:allure.attach.file("./result/b.png", attachment_type=allure.attachment_type.PNG)
集成测试管理系统
@allure.link()、@allure.issue()、@allure.testcase() 主要是为了将 Allure 报告和测试管理系统集成,可以更快速地跳转到公司内部地址。
先看看三个装饰器的源码:
def link(url, link_type=LinkType.LINK, name=None):return safely(plugin_manager.hook.decorate_as_link(url=url, link_type=link_type, name=name))def issue(url, name=None):return link(url, link_type=LinkType.ISSUE, name=name)def testcase(url, name=None):return link(url, link_type=LinkType.TEST_CASE, name=name)
小结
- issue() 和 testcase() 其实调用的也是 link(),只是 link_type 不一样。
- 必传参数 url:跳转的链接。
- 可选参数 name:显示在 Allure 报告的名字,如果不传就是显示完整的链接(建议传,不然可读性不高)。
- 可以理解成:三个方法是一样的,我们都提供跳转链接和名字,只是链接的 type 不一样,最终显示出来的样式不一样而已(type 不一样,样式不一样)。
- 如果你喜欢,只用 @allure.link() 也可以。
- 而出现三个装饰器的原因是为了更好地将链接进行分类(访问链接、Bug 链接、测试用例链接)。
代码示例
import allureTEST_CASE_LINK = 'https://github.com/qameta/allure-integrations/issues/8#issuecomment-268313637'@allure.link('https://www.youtube.com/watch?v=4YYzUTYZRMU')
def test_with_link():pass@allure.link('https://www.youtube.com/watch?v=Su5p2TqZxKU', name='点击我看一看youtube吧')
def test_with_named_link():pass@allure.issue('140', 'bug issue链接')
def test_with_issue_link():pass@allure.testcase(TEST_CASE_LINK, '测试用例地址')
def test_with_testcase_link():pass
运行结果,查看 Allure 报告
3. 接口自动化测试框架示例
完整工程:https://github.com/juno3550/InterfaceAutoTestWithPytest
测试方法示例
1 import pytest2 import allure3 import logging4 from util.assert_util import assert_keyword5 from util.request_util import api_request6 from util.global_var import *7 from util.excel_util import excel_util8 9
10 register_test_data = excel_util.get_sheet_data("注册")
11 login_test_data = excel_util.get_sheet_data("登录")
12
13
14 @allure.feature("登录模块")
15 @pytest.mark.dependency(name="TestLoginModule")
16 class TestLoginModule:
17
18 @allure.story("注册功能")
19 @allure.title('用户注册') # 指定测试用例标题,默认是函数名
20 @allure.description('通过接口进行用户注册') # 添加测试用例描述
21 @allure.severity(allure.severity_level.BLOCKER) # 阻塞级别
22 @pytest.mark.run(order=1)
23 @pytest.mark.parametrize('case_data', register_test_data)
24 def test_register(self, case_data):
25 with allure.step("读取请求数据,调用接口"):
26 logging.info("接口用例数据:%s" % case_data)
27 response = api_request(case_data[API_IP], case_data[API_URI], case_data[REQUEST_METHOD],
28 case_data[API_REQUEST_DATA], case_data[RESPONSE_EXTRACT_VAR],
29 case_data[REQUEST_HEADER], case_data[REQUEST_COOKIE])
30 with allure.step("获取响应数据,进行断言"):
31 assert_keyword(response, case_data[RESPONSE_ASSERT_KEYWORD])
32
33 @allure.story("登录功能")
34 @allure.title('用户登录') # 指定测试用例标题,默认是函数名
35 @allure.description('通过接口进行用户登录') # 添加测试用例描述
36 @allure.severity(allure.severity_level.BLOCKER) # 阻塞级别
37 @pytest.mark.run(order=2)
38 @pytest.mark.parametrize('case_data', login_test_data)
39 def test_login(self, case_data):
40 with allure.step("读取请求数据,调用接口"):
41 logging.info("接口用例数据:%s" % case_data)
42 response = api_request(case_data[API_IP], case_data[API_URI], case_data[REQUEST_METHOD],
43 case_data[API_REQUEST_DATA], case_data[RESPONSE_EXTRACT_VAR],
44 case_data[REQUEST_HEADER], case_data[REQUEST_COOKIE])
45 with allure.step("获取响应数据,进行断言"):
46 assert_keyword(response, case_data[RESPONSE_ASSERT_KEYWORD])
47
48
49 if __name__ == "__main__":
50 test_dir = os.path.dirname(__file__)
51 pytest.main(['-s', '-q', test_dir, '--alluredir', '../test_result/', "--clean-alluredir"])
52 os.system('allure generate ../test_result/ -o ../test_report/ --clean')
53 os.system('allure open -h 127.0.0.1 -p 8881 ../test_report/')
测试数据示例
Allure 报告结果示例
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。
相关文章:
Pytest+Allure+Excel接口自动化测试框架实战
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1. Allure 简介 简介 Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具,它不仅以 Web 的方式展示了简介的测试结果,而且允…...
交易所开发全流程解析:KYC与U盾在安全合规中的战略价值
——2025年加密资产交易平台的技术架构与风控体系深度实践 一、交易所开发的核心技术架构与流程 1. 系统定位与合规基础 交易所开发需首先明确中心化(CEX)、去中心化(DEX)或混合架构的定位。中心化交易所(如币安&…...
简单了解一下Unity的Resources.UnloadUnusedAssets
基本概念 Resources.UnloadUnusedAssets()是Unity提供的一个内存管理方法,用于卸载当前未被任何GameObject引用的资源,包括贴图、材质、网格、音频等资源。 在Unity中,资源在加载后会占用内存,而当这些资源不再被场景中的对象引…...
ECMAScript 7~10 新特性
ECMAScript 7 新特性 ECMAScript 6 新特性(一) ECMAScript 6 新特性(二) ECMAScript 7~10 新特性(本文) 1. 数组方法 Array.prototype.includes() 用来检测数组中是否包含指定元素,返回布尔值&…...
leetcode_1. 两数之和_java
1. 两数之和https://leetcode.cn/problems/two-sum/ 1、题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你…...
Mysql索引(四)
1、B树:B树即平衡查找树,一般理解为平衡多路查找树,也称为B-树、B_树。是一种自平衡树状数据结构,能对存储的数据进行O(log n)的时间复杂度进行查找、插入和删除; 1)每个节点占用一个盘块的磁盘空间&#x…...
力扣——【1991. 找到数组的中间位置】
#前缀和思想 主要利用递推的思想,将数列的前n!项和存到一个新数列中,递推公式可能需要自己推导 一个数列的值等于另一个数列的第i个元素加上这一个数列的第i-1个元素 同时需要初始化这个数列的第一个元素另一个数列的第一个元素 #思路 本…...
在 Linux 系统(ubuntu/kylin)上安装 Docker
在 Linux 系统上安装 Docker 的步骤如下(以 Ubuntu/Debian 和 CentOS/RHEL 为例): 请用./check-config config检查内核是否支持,necessarily 必须全部enable。 以下是脚本自行复制运行: #!/usr/bin/env sh set -eEXITCODE=0# bits of this were adapted from lxc-checkco…...
【实证分析】数智化转型对制造企业全要素生产率的影响及机制探究(1999-2023年)
数智化转型是实现数字经济与实体经济深度融合,推动制造企业高质量可持续发展的必然选择,也是加快新质生产力发展的重要抓手。参照宋冬林(2025)的做法,对来自科技进步与对策《数智化转型对制造企业全要素生产率的影响及机制探究——基于中国制…...
lower_bound
在C中,lower_bound 返回的是一个迭代器(iterator),而不是直接的下标位置。因此,为了得到数组中的索引(即 pos1),你需要用返回的迭代器减去数组的起始地址(num)…...
biblatex 的 Biber 警告:tex文件运行无法生成参考文献和目录
原因:使用了 biblatex 管理参考文献,但未运行 biber 生成参考文献数据。 解决:更新 LaTeX Workshop 配置 修改你的 settings.json,添加 biber 工具并更新编译流程: {"latex-workshop.latex.tools&…...
解锁 MCP:模型上下文协议的介绍与应用,技术解析与应用场景
欢迎来到涛涛聊AI,这几天MCP很火,咱们一起学习下吧。 一、什么是 MCP MCP,即 Model Context Protocol(模型上下文协议),是由 Anthropic 推出的一个具有创新性的开放协议 。它的核心目标是统一 LLM 应用与外部数据源和工具之间的通信方式,为 AI 开发打造标准化的上下文…...
十二种存储器综合对比——《器件手册--存储器》
存储器 名称 特点 用途 EEPROM 可电擦除可编程只读存储器,支持按字节擦除和写入操作,具有非易失性,断电后数据不丢失。 常用于存储少量需要频繁更新的数据,如设备配置参数、用户设置等。 NOR FLASH 支持按字节随机访问&…...
对重大保险风险测试的算法理解
今天与同事聊到重大保险风险测试,借助下面链接的文章, 谈IFRS 17下的重大保险风险测试 - 知乎 谈一下对下图这个公式的理解。 尤其是当看到下面这段文字的解释时,感觉有些算法上的东西,需要再澄清一些。 首先,上面文…...
App Cleaner Pro for Mac 中 Mac软件卸载工具
App Cleaner Pro for Mac 中 Mac软件卸载工具 一、介绍 App Cleaner & Uninstaller Pro Mac破解,是一款Mac软件卸载工具,残余垃圾清除工具!可以卸载应用程序或只删除不需要的服务文件,甚至可以删除以前删除的应用程序中的文…...
【操作系统】线程同步:原理、方法与实践
一、线程同步的核心概念 1.1 为什么需要线程同步? 在多线程环境中,当多个线程并发访问共享资源(如内存、文件、数据库等)时,可能会引发数据竞争(Race Condition),导致数据不一致或…...
vue实现二维码生成器和解码器
vue实现二维码生成器和解码器 1.生成基本二维码:根据输入的value生成二维码。 2.可定制尺寸:通过size调整大小。 3.颜色和背景色:设置二维码颜色和背景。 4.静区(quiet zone)支持:通过quietZone调整周围的…...
p2p的发展
PCDN(P2P内容分发网络)行业目前处于快速发展阶段,面临机遇与挑战并存的局面。 一、发展机遇 技术融合推动 边缘计算与5G普及:5G的高带宽、低延迟特性与边缘计算技术结合,显著提升PCDN性能,降低延迟&#x…...
DeepSeek提示词实战大全:提示词合集和使用技巧
大家好,我是大 F,深耕AI算法十余年,互联网大厂技术岗。 知行合一,不写水文,喜欢可关注,分享AI算法干货、技术心得。 更多文章可关注《大模型理论和实战》、《DeepSeek技术解析和实战》,一起探索技术的无限可能! 【数据集篇】更多阅读: 大语言模型常见任务及评测数据集…...
23种设计模式生活化场景,帮助理解
以下是 23种设计模式的生活化场景 及其核心对比,通过日常例子和比喻帮助理解它们的本质区别和应用场景: 创建型模式(5种) 1. 工厂方法(Factory Method) • 场景:快餐店的点餐系统。 • 问题&a…...
Kotlin 学习-方法和参数类型
/*** kotlin 的方法有三种* */fun main() {/*** 方法一* 1.普通类的成员方法申明与调用* (1)需要先构建出实例对象,才能访问成员方法* (2)实例对象的构建只需要在类名后面加上()* */Person().test()/*** 方法二&#x…...
Java 解析日期格式各个字段含义温习
背景 今天解析了一个不常见的日期格式 「10-Mar-2025 16:30:47.869」,对应的 Java 日期格式是 dd-MMM-yyyy HH:mm:ss.SSS ,而且跟 Local 语言环境有关。 本文记录这个简单的解析过程,顺便回忆一下日期格式各个字段。毕竟平时只用了常见的 y…...
OpenBayes 一周速览|1分钟生成完整音乐,DiffRhythm人声伴奏一键搞定; Stable Virtual Camera重塑3D视频创作
公共资源速递 5 个数据集: * 302 例罕见病病例数据集 * DRfold2 RNA 结构测试数据集 * NaturalReasoning 自然推理数据集 * VenusMutHub 蛋白质突变小样本数据集 * Bird Vs Drone 鸟类与无人机图像分类数据集 2 个模型: * Qwen2.5-0mni * Llama…...
SpringBoot 数据库MySql的读写分离 多数据源 Shardingsphere高并发优化
介绍 传统的 MySQL 架构中,所有的数据库操作(包括读操作和写操作)都在同一个数据库实例上进行。随着应用程序的规模增长,单一数据库实例可能会成为瓶颈,无法满足高并发的需求。为了优化性能,可以将数据库的…...
SQLI漏洞公开报告分析
文章目录 1. 闭合 )2. 邀请码|POST参数|时间盲注 | **PostgreSQL**3. POST|order by参数|布尔盲注|Oracle4. SOAP请求|MSSQL|布尔盲注5. MySQL 时间盲注漏洞6. GET|普通回显注入7. ImpressCMS 1.4.2 | CVE | POST | 布尔盲注8. Mysql | post | 布尔/时间盲注9. 登录口 | post |…...
并行和并发有什么区别?
1. 定义 并行是在同一时刻执行多个任务。并发是在相同的时间段内执行多个任务,任务可能交替执行,通过调度实现。 2. 区别 执行方式: 并发:多个任务交替进行,任务并不一定同时执行,只是在同一时间段内处理…...
Elasticsearch 全面解析
Elasticsearch 全面解析 前言一、简介核心特性应用场景 二、核心原理与架构设计1. 倒排索引(Inverted Index)2. 分片与副本机制(Sharding & Replication)3. 节点角色与集群管理 三、核心特点1. 灵活的查询语言(Que…...
SQL 中的 NULL 处理
NULL 在 SQL 中表示缺失、未知或不适用的数据值,它与空字符串或零值不同。SQL 对 NULL 有特殊的处理规则: NULL 的基本特性 比较运算:任何与 NULL 的比较都返回 UNKNOWN(既不是 TRUE 也不是 FALSE) SELECT * FROM tab…...
2025常用的ETL 产品推荐:助力企业激活数据价值
在当今数字化时代,企业面临着海量数据的挑战与机遇,ETL(Extract, Transform, Load)工具作为数据整合与分析的关键环节,其重要性日益凸显。ETL 厂商众多,各有优势,本文将从多个维度进行分析&…...
深入解析:Python 爬取淘宝商品券后价
在电商领域,淘宝作为国内领先的电商平台,拥有海量的商品和丰富的优惠活动。对于技术开发者来说,获取淘宝商品的券后价是实现电商应用功能的重要环节。本文将详细介绍如何通过淘宝开放平台的 API 接口获取商品的券后价,并提供实际的…...
25.4.10学习总结
关于消除警告 警告: Loading FXML document with JavaFX API of version 23.0.1 by JavaFX runtime of version 17.0.6 对应这条警告,我的处理方式是,将IDEA的默认javaFX的库换成自己下载的javaFX的库。 我用的javaFX的库如下: javaFX-24…...
【XML基础-2】深入理解XML中的语义约束:DTD详解
XML(可扩展标记语言)作为数据交换的标准格式,在Web服务和应用程序间数据传递中扮演着重要角色。而确保XML文档结构正确性和语义一致性的关键,就在于文档类型定义(DTD)。本文将全面解析DTD的概念、语法结构、…...
SkyWalking + ELK 全链路监控系统整合指南
一、架构设计图 二、核心组件部署 1. SkyWalking 集群部署 yaml: # docker-compose-skywalking.yml version: 3.8services:oap:image: apache/skywalking-oap-server:9.7.0ports:- "11800:11800" # gRPC- "12800:12800" # HTTPenvironment:SW_STORAGE: …...
LeetCode hot 100—编辑距离
题目 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符删除一个字符替换一个字符 示例 示例 1: 输入:word1 "horse", word2 &q…...
SAP系统年终结算出错
问题描述:2024年采购订单发票校验过账到2024年时提示错误如下: 问题原因:2024年全部未结束的采购申请和订单被结转到2025年。 解决方法:用事务代码FMJ3冲销此采购订单结转。...
在 Dev-C++中编译运行GUI 程序介绍(二)示例:祝福程序
在 Dev-C中编译运行GUI 程序介绍(二)示例:祝福程序 前期见: 在 Dev-C中编译运行GUI 程序介绍(一)基础 https://blog.csdn.net/cnds123/article/details/147019078 示例1、祝福程序 本文中的这个祝福程序是…...
Uniapp使用onShow语法报before initialization
一、错误原因分析 函数未完成初始化时被调用 • 当你在 onShow 生命周期中调用 getUserMessagePlan() 时,如果该函数的定义位于调用代码的下方(如示例中的顺序),JavaScript 引擎会因 变量提升规则 抛出此错误。 • 示例代码结构&a…...
大模型在儿童急性淋巴细胞白血病(ALL)-初治患者诊疗中应用的研究报告
目录 一、绪论 1.1 研究背景与意义 1.2 国内外研究现状 1.3 研究目的与内容 二、大模型技术与儿童 ALL 相关知识 2.1 大模型技术原理与特点 2.2 儿童 ALL 的病理生理与诊疗现状 三、术前风险预测与手术方案制定 3.1 术前数据收集与预处理 3.2 大模型预测术前风险 3.…...
如何选择适合机床的丝杆支撑座型号?
在机床中选择丝杆支撑座型号时,需综合考虑机械性能、安装条件及应用需求,接下来我们一起来看看详细的选型指南! 1、适配性:丝杆支撑座应与所使用的滚珠丝杆完全适配,确保两者在尺寸、规格、性能等方面相互匹配。 2…...
「The Road to Web3 Cloud」香港活动回顾|波卡的 Web3 Cloud 愿景
在区块链基础设施的发展浪潮中,Polkadot 正在迈出决定性的一步:打造一个属于 Web3 的 “云服务平台”。如果说 Bitcoin 创造了一个计算器,以太坊创造了一个计算机,那么 Polkadot 正在做的则是构建链上的 “云服务器”。它的目标是…...
PostgreSQL-容器运行时索引修复
在 Docker 中运行的 PostgreSQL 数据库如果索引损坏,可以通过以下步骤进行修复。索引损坏可能会导致查询性能下降或数据不一致,因此需要及时处理。 1. 进入 PostgreSQL 容器 首先,进入运行 PostgreSQL 的 Docker 容器: <BASH&…...
Vanna + qwq32b 实现 text2SQL
Vanna 是一个开源的 Text-2-SQL 框架,主要用于通过自然语言生成 SQL 查询,它基于 RAG(Retrieval-Augmented Generation,检索增强生成)技术。Vanna 的核心功能是通过训练一个模型(基于数据库的元数据和用户提…...
100V5A同步降压大功率芯片WD5105:高效电源管理的卓越之选
100V5A同步降压大功率芯片WD5105:高效电源管理的卓越之选 在现代电子设备的复杂电源架构中,对高效、稳定且可靠的电源管理芯片需求日益增长。WD5105作为一款100V5A同步降压大功率芯片,凭借其出色的性能、全面的保护机制以及广泛的应用适应性…...
springboot中测试python脚本:ProcessBuilder
目录 一.添加Jython依赖 二.使用步骤 1. 创建 ProcessBuilder 实例 2. 设置工作目录(可选) 3. 合并错误流(可选) 4. 启动进程 5. 处理输入输出流 6. 等待进程完成 7.完整案例 三.注意事项 ProcessBuilder是jdk提供的脚本…...
Google Chrome下载受限制的解决方案【方法指南】
在国内使用网络时,部分用户在尝试访问Google Chrome官网下载谷歌浏览器时,常常遇到网页无法打开或文件下载失败的情况。这种下载受限制的问题多由网络访问政策或DNS解析异常导致。为了正常获取Google Chrome的最新版安装程序,用户需要通过一些…...
mysql-锁的算法(记录锁、间隙锁、临键锁)
1.行锁的三种算法 有3种行锁算法,分别是: Record Lock:单个行记录上的锁,没有主键,会使用隐式的主键进行锁定Gap Lock:间隙锁,锁定一个范围,但不包含记录本身Next-Key Lock&#x…...
SAP Business One系统标准功能之外的不允许负库存控制
SqlServer版本写法: --在存储过程SBO_SP_TransactionNotification里加上这段代码,记得定义一个全局变量用于接收提醒具体是哪个物料 IF transaction_type IN (A) BEGINIF EXISTS (SELECT 1 FROM OIVL T0INNER JOIN OITW T1 ON T0.ItemCode T1.ItemCode…...
AI与5G的融合:如何实现更快速、更智能的物联网应用?
引言 AI和5G的结合,正在加速物联网(IoT)应用的发展,让万物互联变得更加智能、高效。5G提供超高速率、低时延和海量连接的网络能力,而AI则赋予物联网设备更强的数据分析、预测和自动决策能力。当AI与5G融合,…...
Redis的哨兵
Redis的哨兵 Sentinel 一.哨兵概念1.相关名词解释图 二.主节点恢复方式1.人工恢复主节点故障流程图2.哨兵自动恢复主节点流程 三.使用docker搭建环境1.安装docker-compose2.安装docker3.停止之前的redis服务器4.使用docker获取到redis的镜像5.使用docker-compose进行容器编排创…...
初识Redis · 简单理解Redis
目录 前言: 分布式系统 开源节流 认识Redis 负载均衡 缓存 微服务 前言: 本文只是作为Redis的一篇杂谈,简单理解一下Redis为什么要存在,以及它能做到和它不能做到的事儿,简单提及一下它对应的优势有什么&#…...