自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 Navicate中构造存储过程基本步骤(插入数据)

目录🍑插入一条数据🍑创建存储过程--循环插入多组数据🍑创建存储过程--参数化存储过程🍑插入一条数据首先明确对应的数据库名,明确要插入数据的表名,明确表中字段的规则1、打开Navicate,连接上对应数据库2、点击Query-->New Query,可以打开一个窗口来输入命令3、输入命令:insert into 表名(字段) values(值),然后点击Run就能在对应表格iwebshop中插入数据了。insert into iwebshop_user(u.

2022-05-22 11:38:10 6068 2

原创 【Locust性能测试】基本用法

目录一、Locust优势二、Locust脚本编写基本步骤三、多任务业务场景权重分配四、Locust集合点的设置五、Locust分布式部署六、图表参数分析一、Locust优势 在模拟有效并发方面,Locust的优势在于其摒弃了进程和线程,完全基于事件驱动,使用gevent提供的非阻塞IO和coroutine来实现网络层的并发请求,因此即使是单台压力机也能产生数千并发请求数;再加上对分布式运行的支持,理论上来说,Locust能在使用较少压力机的前提下支持极高并发数的测试。.

2022-05-21 11:03:00 1677

原创 用os方法判断当文件存在时,删除文件

在创建文件时,不想被原有文件影响,就可以使用os库的remove方法先将原文件删除,代码如下:import osfile = "demo.csv"result = os.path.exists(file)# print(result)if result: os.remove(file)

2022-05-18 19:55:30 952

原创 Fiddler过滤器设置--屏蔽不需要分析的文件

目录🍓过滤器设置🍑抓取请求数据包实践🍓过滤器设置1、打开fiddler2、设置过滤器,点击filters。3、站点设置,在Hosts下选择“Show only the following Hosts”,在下面框中输入要抓取的站点,就算只写一个站点后面的分号也不能忘。4、屏蔽不需要分析的文件,勾选“Hide if URL contains”,在后面输入框中输入需要屏蔽的文件后缀名,以空格隔开图片文件:.jpg .png .css .ico .gif静态页面:.js.

2022-05-17 00:00:50 9271

原创 【Locust性能测试】locust环境配置与验证

目录一、Python与Pycharm安装二、locust下载三、locust验证一、Python与Pycharm安装我的配置环境是python3.9.7 + pycharm-community-2021.2.2,安装过程默认,没有特殊步骤,可参考前面配置文章。二、locust下载1、打开pycharm,可以先创建一个项目,新建一个python文件test.py。然后在pycharm中点击File-->Settings-->Project-->Pyt

2022-05-15 22:53:28 1715 1

原创 【Python-GUI】wxPython之自动化数据生成器实战

目录学习目标界面原型设计界面原型设计分析分析设计过程及涉及技术使用面向对象的思想实现:使用技术:代码实现学习目标根据原型设计编译自动化数据生成器,熟悉wxPython的基本用法。界面原型设计界面原型设计分析输入参数:最大长度 最小长度 组成规则 多少组数据 是否生成文件 文件名及路径设置处理方式:确定 重置输出结果:显示运行结果 相关提示信息控件选择:文本框 复选框 按钮 消息对话框分析设计过程及涉

2022-05-14 18:18:59 1341 1

原创 【Python-GUI】wxPython之BoxSizer布局设计基本使用方法

前言:前文学习了使用wxPython来创建窗口,并添加了一个静态的文本信息。学习目标:通过一个简易计算的界面完成下面的学习学习一下如何在窗体上设计文本框控件和按钮控件, 通过BoxSizer对控件进行布局设计, 将文本框输入信息和按钮单击事件进行关联处理。目录一、设计界面原型🍁界面元素分析:🍁界面布局分析:二、界面设计实现🍓2.1、窗体初始化🍓2.2、设置前三个文本框的布局及BoxSizer相关设置逻辑和语法🍓2.3、设置垂直排列的控件🍓2.4、将界面出入.

2022-05-07 10:20:05 2630 1

原创 【Python-GUI】初识窗体-wxPython基础语法

目录前言一、导入wx模块 --import wx二、定义应用程序类的一个对象 -- app = wx.App()三、创建一个顶层窗口的wx.Frame类的对象 -- window = wx.Frame(父窗口, title="...", size=(宽, 高))四、定义Panel对象 -- panel = wx.Panel(window)五、添加一个静态文本对象 --lable = wx.StaticText(panel, label="xxx", pos=(x, y))六、..

2022-05-04 16:06:09 3715

原创 解决csv文件保存长数字串时被识别为科学计数法的问题

🍓问题与现象当在csv文件中想要保存一个很长的数字串的时候,csv文件通常会以科学计数法的方法去保存。代码如下:import csvnum = 847290654557463829file = open('demo.csv', 'w')write = csv.writer(file)write.writerow([num])在csv文件中的保存结果如下:🍑解决方案在数字串的后面加上转义符"\t",这样表格就会将其识别为文本格式,而不是纯数字串了。代码修..

2022-05-04 13:35:55 5485

原创 【Appium】手机按键(比如返回键、Home键等)的数字代号总结

前言:当编写appium自动化脚本时,本着简化的思想,有时候仅仅需要一个回到手机主界面的操作,按一下Home键即可,但要是去定位元素的话,可能还要进行一系列定义、调用好几次点击操作,会比较繁琐,所以手机按键的功能我们也要善于利用。目录🍃手机物理键数字代号🍃键盘按键数字代号🍒控制键🍒键盘数字字母键代码只有一句,很简单:driver.keyevent() 括号里填入的是手机物理按键的数字代号driver.press_keycode() 括号里...

2022-05-03 15:10:57 4648

原创 【Appium】手机app上toast对象的定位及如何抓取

前言:当在app上点了一个操作之后,一般都会有一个toast弹出来提示你当前操作信息,但是toast停留时间一般都很短,很难直接定位,那该如何去抓取呢?本文提供三种方法。目录🍀方法一、抓屏🍀方法二、通过Xpath定位(提供两种方法)🌺项目实践比如我们要抓如下类似的toast,在点击完成之后,会跳出一个"保存成功"的toast,但是它的停留时间都不足1秒,所以没有办法去定位元素。🍀方法一、抓屏因为toast停留时间太短,通过元素去抓取的成功率很低,所以抓屏就是最稳.

2022-04-27 00:00:41 1779

原创 【Appium】手机滑动swipe方法及如何进行坐标定位

前言:当页面元素不在手机屏幕范围内时,我们需要先滑动屏幕直到元素出现在屏幕范围内。目录🍁swipe方法🍁如何确定坐标🍁swipe方法滑动方法很简单,一句代码就解决了,方法是driver.swipe(x,y, x,y),如下:driver.swipe(start_x: int, start_y: int, end_x: int, end_y: int) # 开始坐标 x,y 结束坐标 x,y# 举例:driver.swipe(1400, 2200, 10, 2200).

2022-04-25 02:46:41 1872

原创 读取csv文件时忽略第一行的两种方法

目录🍓问题与现象🍑解决方案一(next方法)🍑解决方案二(添加循环判断)🍓问题与现象当csv文件中存在标题行时,该如何忽略第一行,而直接从第二行读取呢?csv文件如下:代码如下:import csvfile = open('demo.csv', 'r')table = csv.reader(file)for row in table: print(row)运行结果如下:['ID', 'Name', 'Age']['1', 'Tom

2022-04-24 14:59:33 7637

原创 【Appium】通过设计关键字驱动文件来编写脚本

前言:通过关键字驱动文件,使脚本与测试用例分离,可以让代码较薄弱的人按格式填写用例所需参数,即可运行自动化脚本,同时也让代码更加简洁。目录一、设计驱动文件二、根据文件编写脚本一、设计驱动文件本文通过csv文件来编写测试用例,除了用例基本要素ID、name、描述之外,为了和脚本关联起来还要加上元素定位方式、元素对象本身、操作方法、测试数据,当然实际情况还是按照项目要求来。csv文件初步设计如下:注意:测试步骤得按照实际测试时定位的顺序来写,不能乱二、根据文件编写脚本.

2022-04-23 12:03:48 673

原创 【Appium】测试时遇到手机内嵌H5页面的切换问题

前言:H5页面简单理解就是在手机内嵌套了一些网页格式的信息,可以让手机的应用看起来更丰富一些。而当手机内嵌H5页面时,常规的app定位方法就没法使用了,我们需要先切换到H5页面才能进行下一步的定位,那该怎么操作呢,详细如下:目录一、确认app中哪个页面使用了H5技术二、配置H5页面对应的chrome驱动🍓2.1、确认H5页面内置的chrome版本🍓2.2、下载相匹配的chrome驱动版本🍓2.3、将chrome驱动放到appium对应目录下🍓2.4、注意事项三、编写脚本.

2022-04-22 17:24:01 3255 1

原创 【Appium】有道云app的unittest框架简单移植及驱动文件的设计

🍓学习目标:通过有道云项目的实践来熟悉appium的使用 💘如有不足,还望指出 💞若觉不错,希望不吝小手点赞、关注支持一波一、unittest-安装卸载功能当已经完成面向对象类的设计之后,再进行unittest框架移植就是非常简单的一件事了,所要做的就是导入unittest类库,并继承unittest.TestCase。需要注意的是测试方法名必须以test_开头。运行脚本时不再需要进行类的实例化,而只要直接使用unittest.main()即可运行当前类下所有测试方法了。移植之后.

2022-04-21 23:14:51 689

原创 【Appium】使用模拟器实现有道云App的业务功能-新增、搜索、修改、删除

🍓学习目标:通过有道云项目的实践来熟悉appium的使用 💘如有不足,还望指出 💞若觉不错,希望不吝小手点赞、关注支持一波目录一、创建公共类二、创建新增笔记功能三、创建查询笔记功能四、创建修改笔记功能五、创建删除笔记功能六、调用方法一、创建公共类因为class类中不能只定义init方法,所以需要定义一个get_driver方法,在启动app后返回driver对象。# 公共类:设置整个项目的启动参数并返回驱动引擎# 导入Appium类库from a.

2022-04-20 14:50:22 440

原创 【Appium】使用模拟器实现有道云App的新增笔记

🍓学习目标:通过有道云项目的实践来熟悉appium的使用 💘如有不足,还望指出 💞若觉不错,希望不吝小手点赞、关注支持一波目录一、新增笔记-使用常量v1.0二、新增笔记-文件读取v2.0一、新增笔记-使用常量v1.0在初始化方法中添加driver.implicitly_wait(10)智能等待,在元素没有刷新出来之前,最大等待10s。然后手动新增一次笔记,定位新增时点击的元素坐标,具体代码如下:# v1.0实现新增笔记测试# 导入Appium类库from app.

2022-04-18 07:15:17 323 2

原创 Selenium-如何编写Xpath相对路径(持续更新)

🍓学习目标:总结自己遇到的Xpath编写问题 💘如有不足,还望指出 💞如果有帮助的话,希望不吝小手点赞、关注支持一波目录一、已知父节点id和子节点class,要定位字节点一、已知父节点id和子节点class,要定位字节点由于子节点没有id,class又不是唯一的,但是父节点有唯一的id,所以可以使用xpath来定位分析:1、父节点上面的路径都可以用//*来表示相对路径。2、如下图父节点id的name为‘resource-id’,id的值是'com.youdao.

2022-04-17 16:59:10 1876

原创 使用csv写入内容时如何自动分成两个单元格

在写入csv文件的时候英文逗号在csv中被默认为单元格的分隔。示例如下:import csvfile = open('demo.csv', 'w')writer = csv.writer(file)writer.writerow(['今天你吃饭了吗', '要一起吃么', '好的'])运行结果:...

2022-04-16 13:27:13 978

原创 csv文件写入时出现空行问题

目录🍓问题与现象🍑解决方案🍓问题与现象在使用csv写入多行文件时,出现了空行的问题。代码如下:import csvfile = open('demo.csv', 'w')writer = csv.writer(file)writer.writerow(['今天你吃饭了吗'])writer.writerow(['要一起吃么'])writer.writerow(['好的'])运行结果:🍑解决方案添加newline=""参数即可,修改后代码如下:

2022-04-15 15:33:38 2089

原创 解决csv文件用writerow方法写入时,字符串被分割成一个字符占一个单元格的问题

目录🍓问题与现象🍑解决方案🍒分析🍓问题与现象在使用csv的writerow方法时,直接写入字符串会导致字符串被分割成一个字符占一个单元格的问题。代码如下:import csvfile = open('demo.csv', 'w')writer = csv.writer(file)writer.writerow('今天你吃饭了吗')运行结果如下:🍑解决方案使用writerow方法必须将字符串转化成列表,否则就会一个字符占一个单元格。所以加上[

2022-04-14 01:59:05 3734 3

原创 【Appium】使用模拟器实现有道云App的安装卸载

🍓学习目标:通过有道云项目的实践来熟悉appium的使用 💘如有不足,还望指出 💞若觉不错,希望不吝小手点赞、关注支持一波目录一、使用面向对象的思想实现一个模拟器安装卸载的自化测试v1.01.1、定义初始化方法1.2、定义安装卸载方法1.3、定义检查安装是否成功方法1.4、调用方法二、实现两个模拟器的安装卸载的兼容性测试v2.02.1、定义安卓6.0的参数2.2、定义安卓7.1的参数2.3、调用方法三、通过文件读取参数实现任意设备的兼容性测试v3.0.

2022-04-13 15:19:41 2857

原创 【Appium】采用滑动屏幕点掉弹窗及解决真机如何定位坐标的问题

目录🍁问题:🍑解决:🍁如何确定安卓手机屏幕上一个点的坐标🍓手机屏幕坐标划分规则🍓进入手机开发者选项,开启'指针位置'🍓按住想要抓坐标的点,在手机上方查看坐标🍁问题:有些时候,有些弹窗无法通过 'autoDissmissAlerts': 'true'消除;弹窗上也没有任何按钮可点击,定位弹窗元素,又不能点掉它;想要定位弹窗以外的空白地方,又无法定位到,属实很绝望。如下图:🍑解决:可以采用屏幕滑动的操作去点掉图中的提示窗口driver.swipe(707,

2022-04-11 22:36:39 1305 4

原创 【Appium】使用W3C actions方法长按元素

前言:在 appium2.0 之前,在移动端设备上的触屏操作,单手指触屏和多手指触屏分别是由 TouchAction 类,Multiaction 类实现的。 在 appium2.0 之后,这 2 个方法将会被舍弃。会报如下错误:"[Deprecated] 'TouchAction' action is deprecated. Please use W3C actions instead."目录🍑Appium2.0之前长按元素方法:🍓方法:🍓代码如下:🍑Appium2.0之后长.

2022-04-09 15:21:35 6439 16

原创 【Appium】最新版Appium inspector使用方法及如何定位元素

新版Appium Server与Appiuminspector分离了,我们要使用Appiuminspector就需要另外再去官网下载它对应的APP,安装的话可查看【Appium】环境搭建。目录Appium inspector使用方法获取定位元素信息Appium inspector使用方法新版Appium inspector图标如下:1、启动Appium Server,设置Host地址为127.0.0.1,Port默认为47232、连接真机/模拟器,并获取相应手机...

2022-04-08 15:58:52 8575 2

原创 【Appium】安卓8.0以上获取appPackage及appActivity方法

手机端打开被测app之后,想要获取appPackage及appActivity参数,安卓版本8.0之后命令就变了。🍓安卓8.0以下,可使用:adb shell dumpsys activity activities | findstr mFocusedActivity如图:🍓安卓8.0以上,必须使用以下命令,否则不支持:adb shell dumpsys activity activities | findstr mResume如图:...

2022-04-07 17:59:05 797

原创 【Appium】如何配置真机连接及定位元素

目录一、真机配置1、使用数据线连接真机与电脑。2、开启开发者模式3、开启USB调试二、编写脚本1、修改deviceName2、修改platformVersion3、appPackage和appActivity的获取4、定位计算器界面元素5、运行脚本一、真机配置1、使用数据线连接真机与电脑。选择传输文件方式。2、开启开发者模式举我目前手上的两手机为例,其他的应该大同小异华为手机:手机-->设置-->'关于手机'-->版

2022-04-06 21:29:53 4416 11

原创 【Appium】验证appium环境搭建是否成功并考虑脚本需要包含的参数

前言:接上一篇的Appium环境搭建,本篇主要通过脚本去验证环境搭建的正确,以及思考我们在编写脚本时需要考虑的几个问题。目录一、编写脚本需要考虑的因素二、从代码来分析因素2.1、使用的Appium在哪里?2.2、模拟器使用的版本及版本号2.3、使用的模拟器在哪里?2.4、测试哪个App?测试内容?三、执行脚本要做的准备工作3.1、启动Appium服务器3.2、启动Genymotion模拟器3.3、执行脚本一、编写脚本需要考虑的因素需要考虑的必不可.

2022-04-05 19:56:38 3352 20

原创 【Appium】最新版本环境搭建-包含JDK+SDK+Appium+模拟器配置

前言:众所周知,万事开头难,而环境搭建就是我们的第一道坎,在版本选择及配置时总会遇到各种问题。这篇我尽可能详细的介绍了搭建过程中的步骤,希望对你有所帮助。

2022-04-04 11:39:22 9929 23

原创 Git配置详细教程及基础使用方法,教你轻松学会git代码管理

一、Git介绍Git和SVN类似,也是一个配置管理工具,而他们的区别之处在于:SVN是集中管理 所有存档要保存在一台服务器上。 这里可能存在一个单点故障的问题,即一旦服务器出问题,所有人都不能读档。 Git是分布式管理 存档可以保存在本地 也可以保存在远程服务器 GitHub:全球最大同性交友平台,但是服务器在国外,国内访问不稳定。 Gitee:是国内的一个平台,访问比较稳.

2022-03-28 17:11:26 12827 36

原创 使用Git提交代码时出现Author identity unknow

问题1第一次在pycharm中提交代码时出现Author identity unknow解决方法打开本地的git Bash窗口然后按提示输入:git config --global user.name "tom-gitee"git config --global user.email "xxxxx@qq.com"这样去重新上传应该就可以了。问题2我后面上传时又报了一个错:hint: Updates were rejected because the remo.

2022-03-24 01:47:15 3279 1

原创 第一次上传代码到Gitee,一直卡在Loading Account Information界面的解决办法

问题描述:在pycharm中第一次上传提交代码到 Gitee 时,一直卡在LoadingAccount Information界面,并且不管等待多久都没用。解决方法原因:不是我们配置有问题,而是因为对于新的Gitee 需要先创建一个库才行。解决:在刚刚创建的 Gitee 账户中随便创建一个库,回到pycharm中,重新点击一下上传代码,就不会再卡界面了,问题立马就解决了。...

2022-03-24 00:35:21 1895 2

原创 【pytest】日志管理-logging模块

前言:python自带有一个logging标准模块,不需要另外安装,可以直接import使用,主要用于输出测试过程内部执行情况、错误、异常等信息,可以设置输出日志的等级、日志保存路径等。一、初步认识1.1 级别说明先做个简单的实验,导入logging模块,输入以下代码然后查看输出:import logginglogging.critical('logging critical message.')logging.error('logging error message')log.

2022-03-16 08:00:00 3990 10

原创 ResourceWarning资源警告解决方案

当脚本运行之后报了ResourceWarning的错的时候,这里提供两种解决思路💡:💥第一种:优化自己的代码ResourceWarning这个问题一般出现在有些资源使用完没有释放资源,导致内存堆积,从而造成内存溢出...例如游标使用完没有及时关闭、文件没有关闭、参数没有使用....也就是你的程序可以运行,但是最好优化一下...💥第二种:加代码忽略警告如果你实在找不到优化的地方,也可以导入warnings模块,然后调用忽略warnings函数。😅就是有点欲盖弥彰的感觉,所以..

2022-03-12 15:53:31 2054 1

原创 【pytest】如何配置allure及3个常用命令

前言:allure插件提供了一个完美的测试报告模板,但是首先你得会搭建它的环境。一些安装提示以及allure高级用法都可以从官网上获取Allure Framework (qameta.io)目录一、java运行环境1.1 JDK安装1.2 配置Java环境变量1.3 验证Java是否安装成功二、allure安装包配置2.1 下载安装包2.2 配置系统环境变量2.3 验证allure是否安装成功三、安装allure类库四、执行命令创建allure的测...

2022-03-05 23:39:51 2805 18

原创 【pytest】自带的测试报告之Hook钩子函数追加测试执行人/时间/错误截图

前言:pytest框架本身就提供了一个html测试报告的模板,而且使用也非常简单,只是简单的同时,报告上一些要素就会不足。但是我们也可以通过Hook函数追加一些关键信息,所以追求完美的你,一定不会错过下面的追加内容的👀。目录一、生成html测试报告二、添加测试人三、添加测试执行时间四、添加错误截屏一、生成html测试报告首先需要导入一个类库:pytest--html 然后打开Terminal,执行命令:pytest --html=XXX.html,在当前脚本所在文件..

2022-03-05 19:57:13 2420 3

原创 【pytest】parametrize获取参数的几种常用形式--数据结构/文件/数据库/conftest.py配置

前言:pytest提供了一种标签型的传参方法@pytest.mark.parametrize('参数名1, 参数名2', ([参数值1, 参数值2])),只需要在方法上面声明就行了,非常方便。下面就介绍一下几种常用获取参数的方法。

2022-03-05 12:52:16 2680 4

原创 【pytest】ini配置文件-执行指定测试内容

通过pytest.ini配置文件来指定需要执行的测试内容

2022-03-02 00:28:09 1595 15

原创 【pytest】fixture固件-传递参数

pytest用于传递参数的方法是在需要返回参数的方法上面添加一个装饰器@pytest.fixture()

2022-02-28 23:48:48 807 5

HTMLTestRunner适用于python3

从网上下载的HTMLTestRunner模板一般都是适用于py2的模板,在py3上想使用的话需要自己修改代码,此资源已改,适用于py3,可放心使用

2022-04-20

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

TA关注的人

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