自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 allure报告环境搭建

4、虚拟环境里安装allure-pytest,cmd执行activate.bat,进入对应的虚拟环境,执行 pip install allure-pytest。6、pycharm重启后,再执行代码,否则allure可能无效。5、cmd进入系统盘里,输入allure验证是否安装成功。1、allure下载新版.zip文件,解压。3、环境变量配置bin文件和jre文件。2、解压后放到d盘文件里:、

2024-12-17 22:45:14 201

原创 adb连接逍遥安卓模拟器失败的问题解决方案

1、逍遥安卓模拟器进入系统应用,设置-关于平板电脑-版本号,连续点击3次以上,直到提示进入开发者模式,返回设置界面,进入【开发者选项】-【USB调试】开启,之后重启模拟器再次adb尝试连接。2、提示 adb 死活链接不上时 尝试 关闭模拟器任务管理器中结束一下adb.exe程序后打开模拟器链接。

2024-12-12 15:03:40 994

原创 appium学习三---logcat日志相关信息

logcat |grep Displayed 输出设备的启动信息,点击测试的应用app,会出现一串信息,里边会有包名相关信息。dumpsys batterystats ---输出每个应用用了多少电量,信息不好读。logcat *:W 表示W级别以上的日志信息,还可以根据日志关键词过滤日志。日志级别:I表示Info,D表示debug,I表示,W表示。dumpsys meminfo----内存的一些信息。3、dumpsys -l 输出系统中有哪些组件。2、 dumpsys 输出系统的很多的信息。

2024-12-10 19:31:34 441

原创 apk文件包名和activity名称查找方法

以上文件来源:app文件.apk右键选择用压缩文件打开,将【AndroidManifest.xml】文件复制到【AXMLPrinter2】文件下,进入AXMLPrinter2目录,目录栏目输入cmd,进入对应目录里,输入:java -jar AXMLPrinter2.jar AndroidManifest.xml >./1.txt。1.txt文件可以打开,找到包名和activity两个对应的名称。AndroidManifest.xml是二进制,打开是乱码。

2024-12-09 19:02:54 580

原创 appium学习之二:adb命令

以上文件来源:app文件.apk右键选择用压缩文件打开,将【AndroidManifest.xml】文件复制到【AXMLPrinter2】文件下,进入AXMLPrinter2目录,目录栏目输入cmd,进入对应目录里,输入:java -jar AXMLPrinter2.jar AndroidManifest.xml >./1.txt。5、把对应目录下的1.txt文件传到手机sdcard下。14、进入当前目录对应APK文件内:cd ./APK。9、exit退出对应设备,恢复到原始路径下。6、进入对应的设备里。

2024-12-09 18:56:43 606

原创 android studio创建虚拟机注意事项

界面,也可以用命令行启动,但命令行启。动的时候要注意,系统有两个。启动模拟器的时候,可以用。的镜像默认是不可以获取。模拟器的一个区别演示。

2024-12-09 15:52:19 387

原创 【无标题】

(windows系统的settings)--->Emulator--->取消勾选Launch in a tool window --->点击右下角的OK按钮 ---> 重启Android Studio。

2024-12-07 20:38:43 240

原创 pycharm基本库安装的几种方法

把文件放置在新项目的venv中的Scripts,进入命令界面(cmd或者pycharm下新项目的terminal里)pip install -r requirements.txt 实现快速安装项目定义的包。File-Setting-Project-Project Interpreter里安装。B、pycharm中的terminal环境输入命令安装。(有些项目创建时是虚拟环境,前面会有(venv))2)当项目完成后,其他项目想调用本项目基本库方法。项目资源冻结--->调用安装。1)一次性设置下载源。

2024-12-04 20:12:43 685

原创 logcat和Monkey测试的定位

保持logcat抓取状态,进行测试工作,发生crash或者ANR(Application No Response)的问题之后,停止抓取。pass://monkey finshed +monkey日志中搜索:搜索不到CRASH /ANR in。Fail:能够搜索到其中任意一个/monkey异常终止/shutdown(关机)/reboot(重启)monkey中crash--->logcat中的fatal。monkey中ANR---->logcat的ANR。2)有crash/anr。

2024-12-04 19:00:24 259

原创 数据加密使用方法

MD5(Message Digest Algorithm 5)是一种广泛使用的加密散列函数,可以产生一个128位(16字节)的散列值(哈希值),通常用于确保信息传输完整无误。MD5并不是一种加密算法,而是一种哈希函数,它不可逆,即无法通过哈希值反推出原始数据。在 Python 中,使用 Base64 编码和解码是非常常见的操作。下面是完整的示例代码,包括如何正确导入库、编码和解码字符串。它基于两个大质数和一个公钥/私钥对来工作,其中公钥用于加密数据,而私钥用于解密数据。在Python中,你可以使用。

2024-11-19 17:18:50 536

原创 Pytest 学习 @allure.severity 标记用例级别的使用

细心的小伙伴会发现,包含历史两条,这TM居然是叠加呀,正常不应该只是显示我修改后的部分吗?可能有的同学会说,我直接手动删除,当前脚本目录下生成的allure目录就好了呀。""" 没标记 severity 的用例默认为 normal"""print("test_111 文件的测试用例1")print("test_222 文件的测试用例2")print("test_1 文件的测试用例1")print("test_1 文件的测试用例2")normal: 一般缺陷(边界情况,格式错误)哈哈,咱们能不能不这么野蛮?

2024-11-16 21:18:40 1221

原创 YAML 简介及语法

映射(Mapping):节点到节点的映射,键值对,类似某些编程语言的哈希(Hash)、哈希映射(Hash Map)、字典(Dict)、对象(Objects)等;YMAL 中标量是最基本的不可再分割的值,如 字符串(String)、数字(Numbers)、布尔值(Boolean)和空值(null)等。标量(Scalar):原子数据类型,如:字符串(String)、数字(Numbers)、布尔值(Boolean)和空值(null)等;YAML 支持序列(列表),以-开头,后跟一个空格和列表项的值。

2024-11-16 21:14:34 2134

原创 requests超时重试方法(由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败)

1、"由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败",这是在做接口测试经常遇到的问题。

2024-11-14 08:22:48 2382

原创 pytest中的钩子函数

在pytest中,钩子函数是一种特殊的函数,用于在测试执行过程中的特定阶段插入自定义逻辑。pytest提供了许多内置的钩子函数,这些钩子函数允许您在测试的不同阶段进行自定义操作。

2024-11-14 08:21:04 291

原创 python requests请求之timeout参数

上方代码仅将timeout参数传入了一个简单浮点数,这个传入值不一定是个整数,也可以是0.1,0.05这些浮点数。3、timeout参数也可以传入一个包含两个简单浮点数的元组,用来分别设置请求超时时间和读取超时时间。2、timeout参数可以传入一个简单的浮点数,它将请求的连接部分和读取部分设为相同的超时时间。因为在1秒的连接时间内没有连接到服务器,所以就会报连接超时的错误,如上。翻译:传递(连接、读取)超时元组或单个浮点数,将两个超时设置为相同的值。# 传入元组将分别作为连接,读取的超时时间。

2024-11-14 08:20:18 1290

原创 pytest之allure(八)之清空上一次运行的记录(--clean-alluredir)【清空的是测试报告的原始数据(json/text/attach),而不是generate生成测试报告后的re

当我们使用allure生成测试报告之后,我们再修改测试用例,然后再次运行生成测试报告会发现测试报告中保留了上一次用例的运行记录。【默认allure测试报告不会清理之前的原始数据;而原来的原始数据会在最新的allure测试报告中显示历史用例执行结果】如果我们不想看到原来的用例执行记录,而是生成新的测试报告,我们可以在用例执行的时候在命令行中通过指定--clean-alluredir参数来做到每次都生成新的测试报告。

2024-11-14 08:18:28 836

原创 pytest之allure(七)之Tag标记(@allure.epic()、@allure.feature()、@allure.story()、@allure.severity())

执行测试用例时,有的时候我们希望能够更加灵活的指定执行某些测试用例,pytest支持我们通过使用marker装饰器@pytest.mark来实现这个需求,而allure也同样提供了三种类似的方法来实现这个需求。

2024-11-14 08:16:45 1154

原创 pytest之allure(六)之集成缺陷管理系统和测试管理系统(@allure.link()、@allure.issue()、@allure.testcase())前言

allure测试报告框架提供了@allure..link、@allure.issue、@allure.testcase 这三个装饰器,可以用来与缺陷管理系统和测试管理系统集成。综上,allure可以使用@allure..link、@allure.issue、@allure.testcase 这三个装饰器,与缺陷管理系统和测试管理系统进行集成,做到更好的自动化管理。

2024-11-14 08:15:18 812

原创 pytest之allure(五)之为测试用例添加标题(@allure.title())

通过使用装饰器可以为测试用例自定义一个更具有阅读性的易读的标题。

2024-11-14 08:12:53 639

原创 【无标题】

allure支持往测试报告中对测试用例添加非常详细的描述语用来描述测试用例详情;这对阅读测试报告的人来说非常的友好,可以清晰的知道每个测试用例的详情。

2024-11-14 08:10:47 862

原创 pytest之allure(三)之在测试报告中为测试用例添加附件(allure.attach)

allure测试报告同样支持显示不同类型的附件,对测试用例、测试步骤以及fixture函数的结果加以补充。allure.attach() 或者 allure.attach.file 的作用是为allure测试报告的测试用例执行结果添加附件。

2024-11-14 08:08:10 1168

原创 pytest结合allure打标记

关系:feature是story父级,feature 是story父级,是包含关系,从大至小 (1)feature:模块名称 (2)story:用例故事或场景 (3)step :用例的测试步骤。@allure.story # 用于描述feature的用户场景,可以理解为测试场景,一般在测试用例上加。生成订单,包括4个步骤:获取已完成的需求-需求详情-品牌详情-保存需求-获取需求中的订单Code。2、测试步骤:获取需求列表-获取需求详情-获取品牌信息-保存需求-获取最新需求。

2024-11-14 07:57:57 331

原创 【无标题】

前面我们也提到了:HTTP的响应头是由多组键值对组成的。步骤4:如果Tomcat也没有办法处理,这个时候就会抛出500错误代码,然后把异常交给jvm进行处理,也就引发了程序的崩溃。(在客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号,这样就提高速度了。步骤3:如果在最顶层的Servlet当中依然没有处理的了,那么这个异常就会交给Tomcat来进行处理。例如在运行的时候出现了异常(Exception),那么就会显示500,也是不那么常见的情况。

2024-11-12 22:52:51 303

原创 为什么POST请求比GET请求慢?

出现了持久连接还不够,在http/1.1中,还有一种称为管道通信的方式进行速度优化:把需要发送到服务器上的所有请求放到输出队列中,在第一个请求发送出去后,不等到收到服务器的应答,第二个请求紧接着就发送出去,但是这样的方式有一个问题:不安全,如果一个管道中有10个连接,在发送出9个后,突然服务器告诉你,连接关闭了,此时客户端即使收到了前9个请求的答复,也会将这9个请求的内容清空,也就是说,白忙活了……c.浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)

2024-11-12 22:41:44 600

原创 allure测试报告的用例描述设置

m=testcase&f=view&caseID=17&version=1',name='用例连接')5、执行run_cases.py文件,在项目test_suites目录下生成两个目录文件夹 allure_json_path和allure_html_path。allure.attach(img_file_obj,'测试报错截图',allure.attachment_type.JPG)@allure.link(url='https://www.baidu.com/',name='百度搜素')

2024-11-06 11:34:18 647

原创 Pytest框架和Unittest框架区别】

Unittest是Python标准库中自带的单元测试框架,Unittest有时候也被称为PyUnit,就像JUnit是Java语言的标准单元测试框架一样,Unittest框架则是Python语言的标准单元测试框架。Unittest支持自动化测试,测试用例的初始化、关闭和测试用例的聚合等功能,它有一个很重要的特性:它是通过类(class)的方式,将测试用例组织在一起。1、提供test.cases,test suites,test fixtures,test rurner相关类,让测试更加明确、方便、可控。

2024-11-06 11:24:02 339

原创 sort 与 sorted 区别

这里,列表里面的每一个元素都为二维元组,key参数传入了一个lambda函数表达式,其x就代表列表里的每一个元素,然后分别利用索引返回元素内的第一个和第二个元素,这就代表了sorted()函数利用哪一个元素进行排列。而reverse参数就如同上面讲的一样,起到逆排的作用。有时候,我们要处理的数据内的元素不是一维的,而是二维的甚至是多维的,那要怎么进行排序呢?这时候,sorted()函数内的key参数就派上用场了!从帮助信息上可以了解到,key参数可传入一个自定义函数。PYTHON 复制 全屏。

2024-11-06 10:29:57 282

原创 re.compile 函数

group([group1, …>>> m.groups() # 等价于 (m.group(1), m.group(2), ...)>>> m = pattern.match('one12twothree34four', 2, 10) # 从'e'的位置开始匹配,没有匹配。>>> m = pattern.match('one12twothree34four', 3, 10) # 从'1'的位置开始匹配,正好匹配。

2024-11-06 10:20:45 755

原创 正则表达式

print(re.findall('b*',str2))#['', 'b', '', '', '', '', '', '', '', '', '']b的后面有多少个值,包括空值的情况,匹配无意义。# print(re.findall('ab*',str2))#['ab', 'a', 'a', 'a', 'a'] 找到a后面有若干个b,也包含0个b的情况。)何',load1))#['打叶声']# print(re.findall('林(.*)何',load1))#['打叶声']

2024-11-02 16:23:14 386

原创 对于 range() 函数

对于 range() 函数,有几个注意点:(1)它表示的是左闭右开区间;(2)它接收的参数必须是整数,可以是负数,但不能是浮点数等其它类型;(3)它是不可变的序列类型,可以进行判断元素、查找元素、切片等操作,但不能修改元素;(4)它是可迭代对象,却不是迭代器。

2024-11-02 15:52:20 99

原创 f.readlines()和f.read().splitlines()的区别

f.readlines()和f.read().splitlines()都是返回一个list,f.readlines()后面有加\n,f.read().splitlines()没有\n。[‘100\n’, ‘90\n’, ‘89\n’, ‘50\n’, ‘78\n’, ‘50\n’, ‘60\n’] #后面有\n。[‘100’, ‘90’, ‘89’, ‘50’, ‘78’, ‘50’, ‘60’] #后面没有\n。

2024-11-02 15:42:59 124

原创 python基础知识-对象方法知识点

print(str2.strip(' 两个黄鹂鸣翠柳,').strip('*'))#一行白鹭上青天 返回去掉前后*之后的字符串。# print('=='.join('abcd'))#a==b==c==d 将==字符串作为拼接符,串联abcd四个字符。# print(str2.strip('*'))#两个黄鹂鸣翠柳,一行白鹭上青天 返回去掉前后*之后的字符串。# print(str3.replace(' ',''))#两个黄鹂鸣翠柳,一行白鹭上青天。

2024-11-01 23:54:06 418

原创 python列表知识点

1、列表可修改、append()方法新增、extend()方法拼接、insert(1,2023)指定位置添加。# 列表的切片:list1[1:3],复制列表list1[:],翻转列表tuple1[::-1]#6)print(list1.extend(list2)),输出为None。#4)append()方法新增、extend()方法拼接只能对值进行拼接。# 2)list1.pop()默认删除最后一位,也可指定位置删除。#5)合并只能用print(list1+list1)

2024-11-01 11:01:08 165

原创 python中strip(),lstrip(),rstrip()函数的使用讲解

可能和你想的不一样,当你传的参数不管是“abc”还是abc的其他排列形式,这都不重要,重要的是函数只知道你要删除的字符是”a”,”b”,”c”。# 当参数为空的时候,两端的空白符,\r,\n,\t都被删除了,但是中间的那个空白符没动。# 这两个函数和上面的strip()基本是一样的,参数结构也一样,只不过一个是去掉左边的(头部),一个是去掉右边的(尾部)。此函数只会删除头和尾的字符,中间的不会删除。如果strip()的参数为空,那么会默认删除字符串头和尾的空白字符(包括\n,\r,\t这些)。

2024-11-01 10:24:58 608

原创 UI自动化测试思路

2)config:项目公共配置文件夹(config、env),有些项目会和test_data合并一起。7)test_data:测试数据相关文件。1)common(项目公共方法文件夹,用于存放项目公共方法文件)4)locate_data:页面定位元素数据文件夹。5)page_object:页面操作方法文件夹。6)common_case:公共用例文件夹。3)db_sql:测试用到的SQL文件夹。1、分析项目业务知识点,梳理业务逻辑;8)test_case:测试用例文件。9)log:日志文件夹。

2024-10-27 16:53:34 166

原创 UI自动化里处理时间的方法

raise ValueError("您输入的没有匹配规则!

2024-10-27 15:49:11 148

原创 @pytest.mark.usefixtures()方法只调用,拿不到返回值

pytest.mark.usefixtures("task_fixture")#只会调用初始化清除,拿不到返回值。

2024-10-24 21:37:19 386

原创 什么是链式调用

open_login_page() return self 返回实例本身,可以直接链式调用。return self#self是返回实例本身。

2024-10-24 11:51:09 97

原创 PO模式-技术点

setarrt(对象,name,value)给对象添加name属性value值,效果等同于 对象.name=value。func=getattr(对象,funcname)-获取对象数据func()hasattr(对象,xxx)判断对象是否具备xxx属性。1、python反射-设置属性。2、python反射-读取属性。

2024-10-16 16:15:50 108

原创 PO模式特点

4、driver对象需要保证唯一:用python单例保证driver对象的唯一。3、配置文件保存具体的元素定位 yml/yaml。2、元素定位不写死在代码中。

2024-10-16 11:14:54 111

空空如也

空空如也

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

TA关注的人

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