自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (2)
  • 收藏
  • 关注

原创 (一)TestNG测试框架之HelloWorld入门

前言该篇文章主要覆盖环境配置、testNG入门、执行测试三块内容。工具IntelliJ IDEATestNG 6.11Mavenpom.xml配置新建一个maven项目,pom.xml引入依赖。<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema

2020-12-19 13:16:19 392 2

原创 TestNG测试框架之TestNG.xml/YAML

前言该篇文章将详细讲述xml执行方式。testng.xml详解<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"><!--suite有以下属性:name:suite名称,测试报告中展现verbose: 在控制台中如何输出,该设置不影响测试报告allow-return-values:如果设置为false,被@Test注解且有r

2020-12-19 12:52:25 800 2

原创 TestNG测试框架之失败测试重跑

前言在案例执行过程中,往往需要对失败的案例进行重跑,TestNG亦提供相应的实现方案。示例当套件中的测试执行失败时,TestNG都会创建一个名为testng-failed.xml的文件,该XML文件包含运行失败的方法的信息,允许您快速重现失败,而不必运行整个测试,如下所示:编写测试类:import org.testng.Assert;import org.testng.annotations.*;public class TestNGHelloWorld1 { @BeforeTest

2020-12-19 12:47:17 870 1

原创 (二)TestNG测试框架之注解及属性概览

前言TestNG提供了诸多注解,允许开发/测试人员灵活地组织强大的测试用例。注解概览注解/属性 描述 @BeforeSuite @AfterSuite @BeforeTest @AfterTest @BeforeGroups @AfterGroups @BeforeClass @AfterClass @BeforeMethod @AfterMethod 带@BeforeSuite注释的方法将在本套件中所有测试运行之前运

2020-12-19 11:26:59 1036 1

原创 TestNG测试框架之监听器详解

目录1. TestNG简介2. TestNG监听器概述2.1 IAnnotationTransformer2.2 IAnnotationTransformer22.3 IHookable2.4 IInvokedMethodListener2.5 IMethodInterceptor2.6 IReporter2.7 ISuiteListener2.8 ITestListener3. 监听器的使用方法3.1 在 testng.xml中使用TestNG监听器3.

2020-12-18 11:57:18 2492

原创 TestNG测试框架之测试用例的执行顺序分析

既然是讨论执行顺序问题,那么用例肯定是批量执行的,批量执行的方法有mvn test、直接运行testng.xml文件,其中直接运行testng.xml文件的效果与pom文件中配置执行testng.xml效果是一样,所以本次只讨论mvn test 批量运行方式。一、用例准备1、 测试用例编写一些测试用例,单纯为了测试,内容只进行输入,没有任何逻辑。 public class FirstTest { @Test public void testFirst(){ .

2020-12-17 21:37:25 1916

原创 正则表达式中^的用法

用法一: 限定开头 文档上给出了解释是匹配输入的开始,如果多行标示被设置成了true,同时会匹配后面紧跟的字符。 比如 /^A/会匹配"An e"中的A,但是不会匹配"ab A"中的A用法二:(否)取反 当这个字符出现在一个字符集合模式的第一个字符时,他将会有不同的含义。 比如:/[^a-z\s]/会匹配"my 3 sisters"中的"3"这里的”^”的意思是字符类的否定,上面的正则表达式的意思是匹配不是(a到z和空白字符)的字符。总结:什...

2020-12-16 10:49:08 1556 2

转载 Nginx之反向代理(三)

 Nginx 服务器的反向代理服务是其最常用的重要功能,由反向代理服务也可以衍生出很多与此相关的 Nginx 服务器重要功能,比如后面会介绍的负载均衡。本篇博客我们会先介绍 Nginx 的反向代理,当然在了解反向代理之前,我们需要先知道什么是代理以及什么是正向代理。回到顶部1、代理  在Java设计模式中,代理模式是这样定义的:给某个对象提供一个代理对象,并由代理对象控制原对象的引用。  可能大家不太明白这句话,在举一个现实生活中的例子:比如我们要买一间二手房,虽然我们可以自己去找房源,但是

2020-12-14 23:19:30 194

原创 Python之解包

解包在英文里叫做 Unpacking,就是将容器里面的元素逐个取出来(防杠精:此处描述并不严谨,因为容器中的元素并没有发生改变)放在其它地方,好比你老婆去菜市场买了一袋苹果回来分别发给家里的每个成员,这个过程就是解包。Python 中的解包是自动完成的,例如:如果列表中有3个元素,那么刚好可以分配给3个变量。除了列表对象可以解包之外,任何可迭代对象都支持解包,可迭代对象包括元组、字典、集合、字符串、生成器等实现了__next__方法的一切对象。元组解包字符串解包字典解包字

2020-12-14 19:00:52 1331

原创 Selenium之定位浏览器弹窗方法汇总

在selenium自动化测试过程中会遇到定位浏览器弹窗的情况,根据弹框实现原理的不同大致可以分为以下几种类型。1.alert、confirm、prompt类型弹框这三种弹框是JavaScript核心对象window对象中的三种方法。1.1 alert弹框警告消息框 alert 方法有一个参数,即希望对用户显示的文本字符串。该字符串不是 HTML 格式。该消息框提供了一个“确定”按钮让用户关闭该消息框,并且该消息框是模式对话框,也就是说,用户必须先关闭该消息框然后才能继续进行操作。s.

2020-12-13 11:42:23 21328 1

原创 Python+Appium自动化测试之toast定位

目录一. 前言二. 环境三. toast定位准备与定位方法1. 准备2. 定位方法四. 示例代码一. 前言在app自动化测试的过程中经常会遇到需要对toast进行定位,最常见的就是定位toast或者获取toast的文案进行断言,如下图,通过定位"登录成功"的toast就可以断言今日头条登录用例是否通过。但toast区别于控件元素,无法获取焦点,不能通过uiautomatorviewer.bat、appium、weditor等工具定位,因此我们就需要通过别的方法来定位。

2020-12-12 22:32:20 1154

原创 Appium之Hybrid APP混合应用测试

目录前言1. 解决方案2. 遇到的问题2.1contexts只能获取NATIVE_APP,无法获取WEBVIEW2.2已经能够获取到WEBVIEW,但是无法切换到WEBVIEW前言在web自动化中我们会遇见frame的问题,在遇见这些内嵌的标签后我们需要做的就是切换窗口,那么在app自动化测试也有类似的情况就是我们经常看见的内嵌h5,即在我们原生的app中增加一个由html做成的页面。这种应用我们称为Hybrid app移动混合应用程序,即在移动应用程序中嵌入了Webview..

2020-12-12 21:59:42 1791 2

原创 Appium定位元素的几种方法总结

前言appium的webdriver提供了11种元素定位方法,在selenium的基础上扩展了三个,本文以python语言为示例介绍appium中的元素定位方法,可以在pycharm里面输入driver.find_element_by然后会自动匹配出来。1.通过id定位resource-id也称为id,resource-id是唯一的# 元素定位agree_continue_id = "com.baidu.searchbox:id/positive_button"WebDriverW

2020-12-12 12:25:42 29014 3

原创 adb devices检测不到夜神模拟器的解决办法

一、先检测夜神模拟器是否已经打开,不打开显然是无法测试到的。二、如果夜神模拟器已经打开,但是使用adb devices依旧找不到设备,输入adb connect 127.0.0.1:62001可连接上夜神模拟器(62001为夜神模拟器的端口号)。三、但是此方法只针对当前会话有效,如果想彻底解决此问题,请参照下文方法。将SDK\platform-tools下的adb.exe文件,替换夜神模拟器bin目录下的adb.exe。四、将SDK\platform-tools下的adb.exe,copy出.

2020-12-11 16:01:29 3292

原创 Appium的工作原理终于搞清楚了

1. Appium简介官方文档描述如下:Appium is an open source test automation framework for use with native,hybridand mobile web apps.It drives iOS, Android, and Windows apps using the WebDriver protocol.Appium 是一个开源工具,用于自动化 iOS 手机、 Android 手机和 Windows 桌面平台上的原..

2020-12-10 15:33:26 12085 1

原创 Selenium Webdriver原理终于搞清楚了

前言selenium1.x:这个时候的selenium,使用的是JavaScript注入技术与浏览器打交道。需要Selenium RC启动一个Server,将操作Web元素的API调用转化为一段段Javascript,在Selenium内核启动浏览器之后注入这段Javascript。Javascript可以获取并调用DOM的任何元素,自如的进行操作。由此才实现了Selenium的目的:自动化Web操作。这种Javascript注入技术的缺点是速度不理想,而且稳定性大大依赖于Selenium内核对

2020-12-09 17:52:12 15019 3

原创 Mysql之drop、truncate和delete的区别

一、delete1、delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表空间要足够大,需要手动提交(commit)操作才能生效,可以通过rollback撤消操作。2、delete可根据条件删除表中满足条件的数据,如果不指定where子句,那么删除表中所有记录。3、delete语句不影响表所占用的extent,高水线(highwatermark)保持原位置不变。(从I.

2020-12-09 09:46:55 318 2

原创 Mysql之alter用法汇总

为实现数据库中表规范化设计的目的,有时候需要对之前已经创建的表进行结构修改或者调整。在MySQL中可以使用ALTER TABLE语句来改变原有表的结构,例如增加或删减列、创建或取消索引、更改原有列类型、重新命名列或表等。基本语法修改表指的是修改数据库中已经存在的数据表的结构。MySQL 使用 ALTER TABLE 语句修改表。常用的修改表的操作有修改表名、修改字段数据类型或字段名、增加和删除字段、修改字段的排列位置、更改表的存储引擎、删除表的外键约束等。常用的语法格式如下:ALTER..

2020-12-08 19:06:36 1235

原创 MySQL之concat、concat_ws以及group_concat的使用

说明:本文中使用的例子均在下面的数据库表tt2下执行:一、concat()函数1、功能:将多个字符串连接成一个字符串。2、语法:concat(str1, str2,...)返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。3、举例:例1:select concat (id, name, score) as info from tt2;中间有一行为null是因为tt2表中有一行的score值为null。例2:在例1的结果中..

2020-12-07 18:03:16 183

原创 Mysql之count(*),count(1),count(field)区别、性能差异

前言三者有何区别:count(field)不包含字段值为NULL的记录。 count(*)包含NULL记录。 count(*)与count(1) 在InnoDB中性能没有任何区别,处理方式相同 count(1)与count(2)、count(3)......无异如果问一个程序员MySQL中SELECT COUNT(1)和SELECT COUNT(*)有什么区别,会有很多人给出这样的答案“SELECT COUNT(*)”最终会转化成“SELECT COUNT(1),而SELECT COUNT(

2020-12-07 17:18:35 754 1

原创 Mysql之case when用法总结

前言Case具有两种格式:简单Case函数和Case搜索函数。1.简单Case函数case sex when '1' then '男' when '2' then '女' else '其他' end2.Case搜索函数case when sex = '1' then '男' when sex = '2' then '女' else '其他' end这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Ca

2020-12-07 14:50:20 2689 1

原创 Mysql之limit用法总结

LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数,参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。SELECT*FROMtableLIMIT[offset,]rows|rowsOFFSEToffset...

2020-12-07 10:24:02 6455

原创 HTTPS协议之SSL/TLS协议四次握手

1.HTTPS是基于SSL安全连接的HTTP协议。HTTPS通过SSL提供的数据加密、身份验证bai和消息完整性验证等安全机制,为Web访问提供了安全性保证,广泛应用于网上银行、电子商务等领域。此图为HTTPS在网上银行中的应用。某银行为了方便客户,提供了网上银行业务,客户可以通过访问银行的Web服务器进行帐户查询、转帐等。通过在客户和银行的Web服务器之间建立SSL连接,可以保证客户的信息不被非法窃取。2.只需要验证SSL服务器身份,不需要验证SSL客户端身份时,SSL的握手过程为:

2020-12-04 21:39:12 3506

Python自动化测试框架之pytest详解

内容概要:本文介绍Python自动化测试框架pytest的详细使用。 适合人群:从事软件测试的技术人员,对Python有一定的基础。 能学到什么:学习pytest的安装、配置,pytest fixture的使用,pytest的高阶用法如跳过测试函数、标记为预期失败函数、函数数据参数化、修改 Python traceback 输出、执行失败的时候跳转到 PDB、设置断点、获取用例执行性能数据、生成 JUnitXML 格式的结果文件、从Python代码中调用pytest等。从而帮助你在企业中快速搭建自动化框架平台。 阅读建议:跟着本教程一边学习一边动手操作,可以比较快速学习到pytest的使用方法。

2022-04-22

空空如也

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

TA关注的人

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