自定义博客皮肤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)
  • 收藏
  • 关注

原创 列表切片中获取数据

列表切片获取数据

2022-10-09 21:16:59 432 1

原创 使用enumerate生成索引号

使用enumerate生成列表索引号

2022-10-09 20:28:00 304

原创 列表直接赋值、深浅拷贝区别

python列表的深浅拷贝和直接赋值的区别

2022-10-09 15:16:48 355

原创 Jmeter性能测试之JDBC Connection Configuration

JDBC Connection Configuration参数介绍重要参数介绍引入 jar 包根据提供的JDBC连接设置创建数据库连接(和JDBC Request Sampler一块使用)。 可以选择在线程之间合并连接。 否则,每个线程将获得自己的连接。 JDBC Sampler使用连接配置名称来选择适当的连接。 使用的池是DBCP,请参见BasicDataSource配置参数参数介绍属性描述必填Name控制器名称,可以根据实际情况进行设置否Comments注释,描

2021-05-17 15:50:37 406

原创 JMeter性能测试之处理JSON数据

在测试过程中遇到这样的一个JSON数据,在这里插入代码片"[{\"model\": \"mysite.event\", \"pk\": 1, \"fields\": " + "{\"name\": \"节目一\", \"limit\": 23, \"status\": true, \"address\": \"北京\", \"start_time\": \"2019-10-10T10:10:10\", \"end_time\": \"2020-11-07T17:24:04.767\"}}, "

2021-05-11 17:12:04 332 1

原创 JMeter不能保存

在使用Jmeter时,点击保存按钮提示错误,如下所示:2021-05-07 14:42:15,861 ERROR o.a.j.JMeter: Uncaught exception in thread Thread[AWT-EventQueue-0,6,main]java.lang.NoClassDefFoundError: Could not initialize class org.apache.jmeter.gui.util.FileDialoger at org.apache.jmeter.

2021-05-07 14:49:21 3235

原创 JMeter逻辑控制器之Transaction Controller

Transaction Controller参数介绍勾选Generate Parent Sample勾选Include duration of timer and pre-post processors in generated sample事务响应时间是我们衡量业务性能的主要指标,事务控制器(Transaction Controller)可以把其节点下的取样器执行消耗时间累加在一起,便于我们进行统计。同时我们对每一个取样器的执行时间进行统计。如果事务控制器下的取样器有多个,那么只有每一个取样器都运行成

2021-04-21 22:40:44 573

原创 JMeter逻辑控制器之Include Controller

Include Controller参数介绍实例Include控制器用来导入外部JMX文件。要使用它,在测试计划下面创建一个测试片段(Test Fragment),并在它下面添加任何想要的采样器、控制器等,然后保存测试计划。为了方便起见,还可以在外部JMX文件中添加线程组以进行调试,可以使用模块控制器(Module Controller)来引用测试片段进行调试,线程组将在Include过程中被忽略,如下图所示:如果测试使用Cookie管理器或用户定义的变量,这些应该放在顶级测试计划中,而不是放在引入

2021-04-15 23:20:18 339

原创 JMeter逻辑控制器之Module Controller

Module ControllerModule Controller的目标参数介绍控制运行测试片段新建测试片段新增Module Controller使用模块控制器调用测试片段控制运行没每个线程组模块控制下添加元件模块控制器(Module Controller)提供了一种在运行时将测试计划片段替换为当前测试计划的机制。一个测试计划片段由一个控制器和其中包含的所有测试元件(采样器等)组成。该片段可以位于任何线程组中。如果该片段位于线程组中,则可以禁用其控制器,以防止该片段被模块控制器运行(模块控制器除外)。

2021-04-15 21:40:29 1093

原创 JMeter逻辑控制器之ForEach Controller

ForEach Controller参数介绍与自定义变量一起使用循环变量下标起点循环变量下标终点正则表达式提取数组数据ForEach控制器循环遍历一组相关变量的值。当您向ForEach控制器添加采样器(或控制器)时,每一个线程下执行时该控制器下的采样器(或控制器)都会执行一次或多次,在每次循环中变量都有一个新值。输入应该由几个变量组成,每个变量都有下划线和数字。每个这样的变量都必须有一个值。一般和用户自定义变量(User Defined Variables)一起使用,其在用户自定义变量中读取一系列相关的变

2021-04-14 22:47:52 271

原创 JMeter逻辑控制器之Switch Controller

Switch Controller参数介绍元件编号执行元件名称执行Switch Controll的工作方式与交替控制器(Interleave Controller)类似,因为他们都是每次迭代都会运行一个子元件,但不同的是,Switch 控制器不是按照顺序执行的,而是按照控制器定义Swith Value来执行。参数介绍属性描述必填Name控制器名称,可以根据实际情况进行设置否Comments注释,描述在业务中的作用否Switch Value要调用的子元件的编

2021-04-14 17:00:15 428

原创 JMeter逻辑控制器之While Controller

While ControllerWhile Controller指直到条件为False时才停止运行其下元件运行。JMeter可将循环用一个名为${__jm__<控制器名称>__idx}的变量用索引的方式显示出来。例如,如果你的While控制器名为WC,那么你可以通过${__jm__WC__idx}访问循环索引。索引从0开始。...

2021-04-13 22:41:30 1083 1

原创 JMeter逻辑控制器之If Controller

If Controller参数介绍不勾选Interpret Condition as Variable Expression?条件控制器,可以通过某个条件来控制其节点下的元件是否执行。即根据给定表达式的值决定是否执行该节点下的子节点,表达式的值为true则执行,为false则不执行,默认使用javascript语法进行判断。参数介绍界面上红色字体如下所示:For performance it is advised to check “Interpret Condition as Variable

2021-04-12 23:39:56 1223

原创 JMeter逻辑控制器之Runtime Controller

Runtime Controller参数介绍适用场景Runtime Controller是用来控制其子元件的执行时长,时长的单位是秒。比如一个http请求执行完成后,但是Runtime controller设置的运行时间还没结束,该http请求会一直循环的执行下去,直到Runtime controller设置的执行时间结束。注意:控制一个迭代的运行时长,如果线程组下设置1个线程,3此迭代,Runtime Controller设置7秒,那么每次迭代运行7秒,即总时长21秒结束。参数介绍属性

2021-04-10 22:22:18 248

原创 JMeter逻辑控制器之Throughput Controller

Throughput Controller参数介绍执行次数表格吞吐量控制器(Throughput Controller)用来控制其节点下的元件的执行次数,并无控制吞吐量的功能。它有两种执行方式:按照百分比执行(percent execution)按照总量执行( total executions)百分比执行按照迭代的比例执行,即执行次数的百分比来计算执行次数。此时的Throughput取值范围在0-100,而Per User是否勾选对percent execution模式无影响。总执行控制器

2021-04-10 21:51:22 363

原创 JMeter逻辑控制器之Random Order Controller

Random Order Controller参数介绍简单示例嵌套一个子控制器随机顺序控制器与简单控制器非常相似,它会执行每个节点下的子元素一次,但是节点的执行顺序将是随机的。参数介绍如下图所示是随机顺序控制器界面:属性描述必填Name控制器名称,可以根据实际情况进行设置否Comments注释,描述在业务中的作用否简单示例添加随机顺序控制器,添加一个单个线程的线程组并且设置循环次数为3,向线程组添加一个”Home Page“请求。向随机顺序控制器添加5个

2021-04-10 18:23:20 199

原创 JMeter逻辑控制器之Random Controller

Random Controller参数介绍简单示例嵌套子控制器随机控制器运行类似与交替控制器,不同之处是它不是按照顺序运行子控制器和采样器,而是随机运行的,所以其节点下的元件运行顺序不定。参数介绍如下图所示是随机控制器界面:属性描述必填Name控制器名称,可以根据实际情况进行设置否Comments注释,描述在业务中的作用否Ignore sub-controller blocks忽略子控制器,即设置后子控制器不起作用,从而由随机控制器接管控制,类似于交替控

2021-04-10 17:09:21 126

原创 JMeter逻辑控制器之Interleave Controller

这里写目录标题参数介绍简单使用勾选忽略子控制器不勾选子控制器勾选交替控制器(Interleave Controller)其节点下的取样器会交替执行。即该控制器包含的取样器步骤交错执行在每个循环中,每个线程用户仅执行一次控制器内的请求,线程用户依据循环的次数请求控制器中的请求数。参数介绍属性描述必填Name控制器名称,可以根据实际情况进行设置否Comments注释,描述在业务中的作用否Ignore sub-controller blocks忽略子控制器,即设

2021-04-09 23:32:40 398

原创 JMeter逻辑控制器之Once Only Controller

Once Only Controller不管线程组设置多少次循环,它下面的节点都只会执行一次。字段介绍属性描述必填Name显示的控制器的描述性名称,可以自定义否Comments注释,描述在业务中的作用否如我们创建了一个包含两个HTTP请求的线程的测试计划。每个线程向主页发送一个请求,然后向Bug页面发送三个请求。尽管我们将线程组配置为迭代3次,但是只发送一个请求到到主页,因为此请求位于Once Only 控制器中。JMeter线程将按以下顺序发送请求:Home

2021-04-08 21:35:57 251

原创 JMeter 逻辑控制器之Loop Controller

循环控制器可以控制在其节点下的元件执行次数。如果您将一个HTTP请求添加到循环控制器,循环数为2,并将线程组循环计数配置为3,JMeter将总共发送2 * 3 = 6个HTTP请求。JMeter会将循环索引公开为一个名为__jm__<循环控制器名称>__idx的变量。例如,如果你的循环控制器名为LC,那么你可以通过${__jm__LC__idx}访问循环索引。索引从0。字段介绍就一个需要了解的字段:循环次数,可以填具体的次数,也可以勾选永远如果勾了永远,即使线程组的循环次数设置了

2021-04-08 15:58:51 1102

原创 Jmeter安装和环境变量搭建

Jmeter安装配置一.安装Java环境1.1 下载JDK1.2 安装JDK1.3 配置系统环境二.Jmeter的安装及环境变量配置Jmeter可以安装在Windows和Linux系统上。由于Jmeter是纯Java开发的,所以要运行Jmeter,系统上必须要安装JDK。一.安装Java环境目前我使用的是官网的最新版本5.4.1,而官网明确要求Java环境必须是Java 8+。1.1 下载JDKJDK 可以到官网选择windows系统版本(32位/64位)下载http://www.oracle.

2021-04-04 21:31:20 213

原创 模块pytest_check出错:PytestAssertRewriteWarning: Module already imported so cannot be rewritten

使用Pytest框架做自动化测试时,使用Pytest_check模块进行断言,但是运行时会提示一个错误,如下所示:============================== warnings summary ===============================..\venv\lib\site-packages\_pytest\config\__init__.py:1114 C:\Users\Administrator\Desktop\jiekou\venv\lib\site-packag

2020-12-16 16:36:31 4077 2

原创 Pytest报告添加描述时报错:AttributeError: ‘TestReport‘ object has no attribute ‘description‘

Pytest报告添加描述时报错AttributeError: 'TestReport' object has no attribute 'description'AttributeError: ‘TestReport’ object has no attribute ‘description’在conftest文件增加报告描述,如下:@pytest.mark.optionalhookdef pytest_html_results_table_header(cells): cells.inse

2020-12-10 14:59:15 5273 7

原创 解决Python多模块下读取同一文件问题

在编码过程中使用相对路径使代码的稳定性更好,即使项目目录发生变更,只要文件相对路径不变,代码依然可以稳定运行。但是在python代码中使用相对路径时会存在以下问题,示例代码结构如下:在models包下有一个read_data.py模块,主要用来读取data目录下的config.ini 文件,代码如下:import configparserdef read_data(): cfg = co...

2020-03-16 20:48:00 478

原创 Appium + Python 自动化测试学习之十四:configparser模块读取ini配置文件

在自动化测试过程中,为了提高脚本的可读性和降低维护成本,将一些通用信息写入配置文件,将重复使用的方法写成公共模块进行封装,使用时候直接调用即可。一.简介.ini文件是Initialization file的缩写,即为初始化文件,是Windows系统配置文件所采用的存储格式,统管Windows的各项配置,一般用户就用Windows提供的各项图形化管理界面就可以实现相同的配置了。但在某些情况,还是...

2020-03-15 21:20:10 395

原创 Appium启用APP时遇到一个问题:Message: An unknown server-side error occurred while processing the command

Appium做自动化测试时,启用APP运行不起来,报如下错误:selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: The instrumentation process...

2020-03-15 16:37:22 4899 1

原创 Appium + Python 自动化测试学习之十三:Logging日志模块

日志是对软件执行时所发生事件的一种追踪方式。软件开发人员对他们的代码添加日志调用,借此来指示某事件的发生。一个事件通过一些包含变量数据的描述信息来描述(比如:每个事件发生时的数据都是不同的)。开发者还会区分事件的重要性(重要性也被称为 等级 或 严重性)。而我们在做app自动化测试时,遇到异常情况,查看日志也是必不可少的。那我们在什么情况下使用日志呢?一.何时使用日志对于简单的日志使用来说日...

2020-03-14 20:21:00 721

原创 Appium + Python 自动化测试学习之十二:读取Yaml配置文件

YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。YAML在python语言中有PyYAML安装包。YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。一.Yaml的简介1.基本语法规则大小写敏感使用缩进表示层级关系缩进时不允许使用Tab键,只允许使用空格。缩进的空格数目不重要,只要相同层级的元素...

2020-03-12 18:37:26 382

原创 Appium + Python 自动化测试学习之十一:常用截图方法

在自动化测试过程中,APP可能会出现意想不到的异常,为了更好的定位到问题,我们在自动化过程中除了捕捉日志,我们还需要对运行的设备状态进行截图。而在appium中同样有好几种截图方法(其实就是selenium方法)。我们这里介绍两种经常用的截图方法,方法一:save_screenshot()直接保存当前屏幕截图到当前脚本所在文件位置如:driver.save_screenshot('sc...

2020-03-10 19:09:01 948

原创 Appium + Python 自动化测试学习之十:MultiAction实现多点操控

我们在使用APP过程中,经常有一些操作需要放大或者缩小,如浏览图片、查看地图等等,那么在自动化测试过程中怎么样实现这些操作呢?Appium 中webdriver提供了MultiAction(多点触控类)来模拟用户的多点操作。MultiAction中常用方法:1.add...

2020-03-10 17:58:32 425

原创 Appium + Python 自动化学习之九:TouchAction连续滑动操作

TouchAction是Appium的辅助类,主要针对手势操作,比如滑动、长按、拖动等。针对最新版本(5.0.4)已不支持swipe等方法,所以可以用TouchAction类来封装成新的swipe方法。1.press按压方法开始按压一个元素或坐标点(x,y)。通过手指按压手机屏幕的某个位置。格式:press(WebElement el, int x, int y)press也可以接收屏...

2020-03-08 20:27:04 2044

原创 Appium + Python 自动化学习之八:Tap()方法模拟手势点击坐标

我们在appium做自动化时发现,有一些元素我们使用各种工具都是无法定位到,或者有的元素不是唯一识别标志,不管用哪种元素定位方法都定位不到,那遇到这种情况我们该怎么办呢?appium中webdriver提供了tap方法通过相对坐标来进行定位。tap是模拟手指点击,一般页面上元素的语法有两个参数,第一个是positions,是list类型最多五个点,duration是持续时间,单位毫秒。tap语...

2020-03-08 14:39:10 3205

原创 Appium + Python自动化测试学习之七:Scroll滑动页面操作实例

Appium 中webdriver提供scroll()方法来滚动页面,不过不是滑动滚动条,而是获取两个元素后,从一个元素滚动到另一个元素。scroll的方法简介:scroll(self, origin_el, destination_el, duration=None):参数: - originalEl - 开始要滚动的元素 - destinatio...

2020-03-07 21:15:52 1883

原创 Appium + Python自动化测试学习之六:swipe滑屏操作实例

我们在操作APP过程中,经常会遇到屏幕滑动,如看微信朋友圈时,经常会遇到向下、向上的滑动;浏览图片时遇到向左、向右滑动;登录过程中遇到九宫格的滑动等等。那么在自动化测试过程中,滑动是怎么操作的呢?appium的Webdriver提供了swipe的方法来实现滑动。格式:swipe(int start x,int start y,int end x,int y,duration)解释:int s...

2020-03-07 15:58:33 2137 3

原创 Appium + Python自动化测试学习之五:capability参数配置简介

什么是Capabilitydesired capability的功能是配置Appium会话。他们告诉Appium服务器您想要自动化的平台和应用程序。Desired Capabilities是一组设置的键值对的集合,其中键对应设置的名称,而值对应设置的值(如:”platformName”: “Android”)。Desired Capabilities主要用于通知Appium服务器建立需要的...

2020-03-04 21:41:09 397

原创 Appium + Python自动化测试学习之四:Toast元素定位

一.认识Toast提示框Toast提示框是一种非模态弹窗,它弹出一个小信息,作为提醒或消息反馈来用,一般用来显示操作结果,或者应用状态的改变。例如你发出了一条短信,App弹出一个Toast提示你消息已发出。最常见的Toast提示框为一句简短的描述性文字。这种样式的弹窗可以出现在页面的任何位置,可设置成在页面顶部、中部或者在底部出现(但一般都是出现在页面的中轴线上),具体的显示位置根据页面的整体...

2020-03-04 17:16:47 984

原创 Appium + Python自动化测试学习之三:元素等待机制

在我们自动化过程中,能否构建一个健壮和可靠的测试是UI自动化测试能否成功的关键因素之一。然而在自动化过程中试着去执行的时候,常常会出现各种不同的状况,当使用脚本定位元素或者去验证程序的运行状态时,有时候会发现找不到元素,这可能是由于突然的资源受限或者网络延迟或者机器性能等各种因素引起的响应速度太慢导致的,这时候测试报告就会返回测试失败的结果。其实元素是正常加载的,只是加载的时间晚了一点,那么遇到这...

2020-03-01 16:07:08 875

原创 Appium + Python 自动化学习之二:元素定位

我们必须告诉Appium怎样去定位元素,用来模拟用户动作,或者查看元素的属性和状态,以便我们可以执行检查。例如,我们在淘宝上购物时搜索一个产品,首先需要找到搜索框和搜索按钮,接着通过键盘输入要购买物品的关键字,最后点击搜索按钮,提交搜索请求。正如上述人工的操作步骤一样,我们也希望Appium能模拟我们的动作,然而,Appium并不能理解在搜索框中输入关键或者单价搜索按钮这样的图形化操作。所以需要我们程序化的去告诉Appium如何定位搜索框和搜索按钮,从而模拟输入和点击的动作。Appium提供多种元素

2020-02-28 22:34:49 607

原创 Appium + Python 自动化学习之一:元素定位工具

appium的元素定位方式有:id、name、class、相对定位、Xpath定位、List定位、Uiautomator定位

2020-02-28 17:47:51 961

原创 Appium自动化测试启动APP遇到“UiAutomator exited unexpectedly with code 0, signal null”解决

在使用Appium自动化测试时,启用APP时遇到一个问题。所有环境都已搭建后,运行代码后,APP不能启用,到日志窗口查看,提示这样一个错误:UiAutomator exited unexpectedly with code 0, signal null百思不得其解,不知道哪里出错了,到网上找说有一个方法可以解决此问题:方法一:1、直接输入命令 adb shell 进入手机 (也可以先进入j...

2020-02-28 14:11:41 6289 3

空空如也

空空如也

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

TA关注的人

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