- 博客(316)
- 资源 (7)
- 收藏
- 关注

原创 Hypium纯血鸿蒙系统 HarmonyOS NEXT自动化测试框架
- type: 设备连接方式,usb-hdc表示使用hdc命令控制设备(默认) -->-- ip: 远端设备地址,ip和port为空时使用本地设备,非空时使用远端设备 -->-- port: 远端设备端口号 -->-- sn: 设备SN号列表,SN之间用分号";"分隔,sn字段为空时使用所有本地设备,非空时使用指定的sn设备 -->-- 指定测试用例目录,为空则默认设置为当前项目下的testcase文件夹 -->
2025-01-04 11:45:16
1845
2

原创 纯血鸿蒙系统 HarmonyOS NEXT自动化测试实践
hdcarkTShypiumhmdriver2 一个鸿蒙自动化测试py库,安装方便,语法简洁鸿蒙自动化测试的查看了文档后,发现hypium是官方的自动化框架,但是安装环境比较复杂,并且他是一整套的测试框架,包括了用例套件的管理与执行等,算是比较重量级的。hmdriver2是一个轻量级的库,流程等都不复杂,先体验一下这个。
2024-11-07 10:20:55
2253
3

原创 Robotframework+Appium+夜神模拟器环境搭建
Windows下Appium自动化环境搭建一 概述Appium是一个开源测试自动化框架,可用于原生,混合和移动Web应用程序测试。 它使用WebDriver协议驱动iOS,Android应用程序。其具备以下优点:1.可以跨平台同时支持Android、iOS2.支持多种语言,JAVA、Python、PHP、Ruby等等二 环境准备 JDK Ja...
2019-05-24 13:17:15
3028
原创 实时响应的秘密:用Spring Boot轻松实现流式AI输出
WebFlux模块是Spring 5引入的一部分,旨在提供一种新的方式来构建响应式的Web应用程序。它允许你以异步和非阻塞的方式处理HTTP请求,这在处理高并发场景时可以显著提高性能。
2025-01-16 09:49:44
2812
原创 Python 异步编程 asyncio
(异步输入输出)是一种编程模式,它允许程序在等待I/O操作(如文件读写、网络请求等)完成时继续执行其他任务。通过这种方式,可以更有效地利用CPU资源和提高程序的响应速度,尤其是在处理大量并发连接或长时间运行的任务时。 是 Python 的一个库,用于编写并发代码,使用协程、任务和 Futures 来处理 I/O 密集型和高延迟操作正常的发送请求,发送请求后会等待连接建立和服务器响应,这段时间内cpu是空闲的,也无法切换到其他任务asyncio允许当执行的任务遇到IO密集型任务时(如发送请求),cpu空闲,将
2024-12-06 10:17:35
1062
原创 异步编程与同步编程的区别
不使用异步 I/O 时,程序在等待 I/O 操作完成时会阻塞,这可能导致资源浪费和低效的并发处理。而使用异步 I/O,则允许程序在等待 I/O 操作的同时继续执行其他任务,从而提高了资源利用率和程序的整体性能。选择哪种方式取决于具体的应用场景和需求。对于 IO 密集型任务,尤其是那些涉及大量并发操作的应用,异步 I/O 是一个更好的选择。
2024-12-06 09:45:18
587
原创 Python yield关键字
yield是 Python 中的一个,它用于定义生成器函数。生成器是一种特殊的迭代器,它可以在遍历过程中逐步产生值,而不是一次性生成所有值并将其存储在内存中。这使得生成器非常适合处理大量数据或无限序列,因为它们只在需要时才生成下一个值,从而节省了内存。当你在一个函数中使用yield语句时,这个函数就变成了一个生成器函数。调用生成器函数并不会立即执行其中的代码,而是返回一个生成器对象。当对这个生成器对象进行迭代(例如通过for循环或者调用next()
2024-12-04 17:15:29
1041
原创 Pytest框架学习21--fixture总结
@pytest.fixture 是 pytest 测试框架中的一个重要特性,它用于定义测试夹具(fixture),这些夹具可以在测试函数执行前后进行一些准备工作和清理工作。通过使用 @pytest.fixture 装饰器,可以将某些初始化逻辑抽象出来,并且使得这些逻辑能够被多个测试用例共享,从而提高代码的复用性和可维护性。作用设置测试环境:例如配置数据库连接、初始化外部服务等。 准备测试数据:提供测试所需的数据,如用户信息、产品列表等。 模拟外部依赖:当测试难以直接访问外部系统时,可以使用 fi
2024-12-02 14:54:15
873
原创 Pytest框架学习20--conftest.py
conftest.py,pytest用例会自动识别该文件,放到项目的根目录下就可以全局目录调用了,如果放到某个package下,那就在该package内有效,可有多个conftest.py。conftest.py可以跨.py文件调用,有多个.py文件调用时,可让conftest.py只调用一次fixture,或调用多次fixture。例如,所有用例都需要登录,可以在conftest中编写后,不用导入其他用例文件,可以直接在每个方法前调用。需要先在一个新文件中编写函数等,然后在使用的文件中导入,然后使用。
2024-11-30 10:57:05
483
原创 PlayWright自动化测试7
在 Python 中,yield关键字用于定义生成器函数,但在pytest的 fixture 中,yield有特定的作用。特别是在pytest的上下文中,yield用于分隔 fixture 的设置(setup)和清理(teardown)逻辑。yield。
2024-11-29 10:52:04
693
原创 PlayWright自动化测试6
Playwright Trace Viewer 是一个 GUI 工具,可让您探索记录的 Playwright 测试跟踪,这意味着您可以在测试的每个操作中前后移动,并直观地查看每个操作期间发生的情况。查看 playwright show-trace trace.zip或。选择录制好的trace.zip文件即可打开。
2024-11-25 17:00:44
341
原创 PlayWright自动化测试4
终端执行上述命令后,打开两个窗口,一个浏览器,一个代码录制窗口,自己操作浏览器,右边就会生成对应的代码,还可切换成不同语言的,操作完成后,可以复制到代码编辑器,运行回放。有name,value,domain,path等,如果不设置domain、path会报错。cookie数据是一个数组,数组中每个元素是一个字典,字典的键是固定的。如果自己定位不到的元素,可以使用录制方式,定位试试。
2024-11-21 11:14:03
203
原创 PlayWright自动化测试3
context 上下文使用browser.new_context() 创建context对象,context之间是相互隔离的,可以理解为轻量级的浏览器实例。它不会与其他浏览器上下文共享 cookies/缓存。如需要不同用户登录同一个网页,不需要创建多个浏览器实例,只需要创建多个context即可。一个browser可以有多个context,一个context可以有多个page,一个page可以有多个framecontext之间隔离,有自己的cookie和浏览器历史和存储。
2024-11-20 10:04:50
412
原创 PlayWright自动化测试2
PlayWright对元素执行操作前,会进行一系列可操作性检查,以确保这些行动按预期运行。它会自动等待所有相关检查通过,然后才执行请求的操作。如果所需的检查未在给定的范围内通过则抛出timeout,操作将失败并显示TimeoutError。playwright通过slow_mo (单位是毫秒)减慢执行速度,它的作用范围是全局的,从启动浏览器到操作元素每个动作都会有等待间隔。
2024-11-19 16:19:01
352
原创 PlayWright自动化测试1
Playwright是一个由Microsoft开发和维护的用于自动化浏览器操作的开源工具,它支持多种浏览器(包括Chromium、Firefox和WebKit等)和多种编程语言(如Python、JavaScript和C#),可以用于测试、爬虫、自动化任务等场景。
2024-11-19 11:40:24
1073
原创 LeetCode 128. 最长连续序列 ⭐️
给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为O(n)的算法解决此问题。4最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。9。
2024-08-21 15:05:34
330
1
原创 LeetCode 15. 三数之和⭐️
给你一个整数数组nums,判断是否存在三元组满足i!= ji!= k且j!= k,同时还满足。请你返回所有和为0且不重复的三元组。答案中不可以包含重复的三元组。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。[]唯一可能的三元组和不为 0。[[0,0,0]]唯一可能的三元组和为 0。
2024-08-19 10:00:06
177
原创 Leetcode 49 字母异位词分组
给你一个字符串数组,请你将组合在一起。可以按任意顺序返回结果列表。是由重新排列源单词的所有字母得到的一个新单词。
2024-08-16 09:35:44
427
原创 LeetCode 242 有效的字母异位词
给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。sttrues= "rat",t= "car"falset如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
2024-08-15 19:11:28
333
1
原创 LeetCode290 单词规律
所以也是同样用两个map,一个记录a:dog这样的映射规律,一个map记录dog:a这样的映射记录。该题思路与LeetCode205 同构字符串一样,都是判断对应关系是否唯一的。当map中key存在时,如果值与当前遍历的值不相同,就返回false。中的每个非空单词之间存在着双向连接的对应规律。里的每个字母和字符串。是否遵循相同的规律。
2024-08-15 09:22:51
369
原创 LeetCode 205 同构字符串
给定两个字符串s和t,判断它们是否是同构的。如果s中的字符可以按某种映射关系替换得到t,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
2024-08-14 14:01:37
374
1
原创 LeetCode 383. 赎金信
ransomNote和magazine,判断ransomNote能不能由magazine里面的字符构成。如果可以,返回true;否则返回false。magazine中的每个字符只能在ransomNote中使用一次。
2024-08-14 10:48:12
527
1
原创 LeetCode1. 两数之和
给定一个整数数组nums和一个整数目标值target,请你在该数组中找出target的那整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。[0,1]因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。[1,2][0,1]
2024-08-13 10:12:44
264
原创 LeetCode 3 无重复字符的最长子串⭐️
给定一个字符串s,请你找出其中不含有重复字符的的长度。3因为无重复字符的最长子串是"abc",所以其长度为 3。1因为无重复字符的最长子串是"b",所以其长度为 1。3因为无重复字符的最长子串是"wke",所以其长度为 3。请注意,你的答案必须是的长度,"pwke"是一个子序列,不是子串。
2024-08-13 09:55:18
645
原创 LeetCode 链表两数相加⭐️
给你两个的链表,表示两个非负的整数。它们每位数字都是按照的方式存储的,并且每个节点只能存储数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
2024-08-12 11:10:27
1546
原创 LeetCode 11. 盛最多水的容器
我们能够发现不管是左指针向右移动一位,还是右指针向左移动一位,容器的底都是一样的,都比原来减少了 1。这种情况下我们想要让指针移动后的容器面积增大,就要使移动后的容器的高尽量大,所以我们选择指针所指的高较小的那个指针进行移动,这样我们就保留了容器较高的那条边,放弃了较小的那条边,以获得有更高的边的机会。在这种情况下想要让容器盛水变多,就只有在容器的高上下功夫。一开始两个指针一个指向开头一个指向结尾,此时容器的底是最大的,接下来随着指针向内移动,会造成容器的底变小,轴共同构成的容器可以容纳最多的水。
2024-08-01 11:26:28
291
原创 LeetCode 167. 两数之和 II - 输入有序数组
使用哈希表,用一个map存元素和元素对应下标,然后判断map中是否包含key为target-numbers[i]的元素,如果在就找到了。因此 index1 = 1, index2 = 2。返回 [1, 2]。因此 index1 = 1, index2 = 2。因此 index1 = 1, index2 = 3。当头+尾>target,说明尾不动的情况下,所有的和都大于target,所以需要,尾向左移。当头+尾
2024-07-31 17:30:06
327
原创 LeetCode 392. 判断子序列
如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?思路:快慢指针思想,快指针遍历字符串t,慢指针指向字符串s中的字符,如果t中遇到与s中字符相同的,慢指针移动,否则快指针移动。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。优化版本:特殊场景也可容纳,主要是循环中加了条件,j<t.length();特殊场景s="",或t=""或s="",t=""
2024-07-31 10:30:21
191
原创 Leetcode189. 轮转数组
注意:如果翻转的次数超过了数组长度,实际上与k%size反正次数效果是一样的,所以需要。所以方法就是写一个翻转数组的方法,然后将整个数组翻转0,n-1。可以看做是先将数组翻转[7,6,5,4,3,2,1]向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]然后将前3个数组翻转,后三个数组翻转。然后将前k个元素翻转,0,k-1。然后将后边元素翻转,k,n-1。,将数组中的元素向右轮转。这个题目找到规律就好写点。
2024-07-29 19:38:18
199
原创 Leetcode 169. 多数元素
给定一个大小为n的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。32思路:可以想象成为多帮派投票选取黑帮老大的场景,首先我方选一个人当老大,计数为1再来一个投票人,如果这个人是我方势力,那么计数加1如果不是我方势力,那么计数减一,敌我双方同归于尽1个,这时需要看看我方计数是否已经归0,如果已经归0,说明我方已经没人了,需要重新选新的老大,然后重新开始附摩尔算法。
2024-07-29 10:38:42
1036
1
原创 移除链表中值为val的元素
如果当前值==val,那么就将pre.next指向curr.next,,然后将curr后移,指向curr.next,pre不需要移动,因为curr的pre还是pre。示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]示例 2: 输入:head = [], val = 1 输出:[]定义一个pre指向当前元素的上一个元素。定义一个curr节点指向当前元素。
2024-07-25 19:51:14
188
原创 字符串不含重复字符的最长子串
* 给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。示例 1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
2024-07-25 10:04:20
276
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人