python3配置文件的增删改查等操作可以使用内置的ConfigParser模块,可以自行百度学习,也可以看Python3学习笔记27-ConfigParser模块 配置文件一般存放着环境信息,比如url和一些测试过程中后续需要用到的字段.还有测试中需要导入,导出的一些文件.在项目下新建Config文件夹,文件夹下新建config.ini文件.项目结构如下 ​ 实际项目测试中,比如测试环境和生产的地址的切换,用户信息这些都是放在配置文件中,所以会频繁的使用对配置文件进行操作的方法,那我们就需要对…
之前我们已经把测试基类,配置文件操作,浏览器引擎类封装完成.接下来使用POM的设计思路来创建我们的测试用例.接下来看一个实例,先在项目下新建pageobject文件夹.这个文件夹下放所有要测试的页面类,在下面新建BaiduPage.py.用来写关于百度首页的元素定位和操作.在项目下新建testsuites文件夹.这个文件夹下方所有页面对应的测试类,在下面新建test_baidu.py.用来编写测试百度首页的测试代码. ​ 先写BaiduPage.py,将搜索输入框,和搜索按钮定位.然后封装相应操…
什么是自动化测试框架 自动化测试框架能够提供便利给用户高效完成一些事情,比如,结构清晰开发脚本,多种方式.平台执行脚本,良好的日志和报告去跟踪脚本执行结果. 关于自动化测试框架的定义有很多,在我大致理解下就是把能实现不同功能的软件组合在一起,实现特定的目的,这就是一个简单的自动化测试框架. 界面自动化测试框架核心是选择 一个用来编写脚本的语言,一个用来web界面的库,管理脚本的执行工具.这里选择python,web界面库用的selenium,脚本管理工具可以用unittest单元测试框架.测试报…
首先我们先来实现日志的功能,日志可以使用python3自带logging模块,不会的可以百度一下相关文章,也可以看我另外一篇文章Python3学习笔记24-logging模块 在封装日志类前,我们需要想一下,我们需要实现怎样的日志功能,需要把日志放到项目下指定路径,文件名为日期.log,需要把所有日志输出到一个文件中,需要把报错的日志单独输出到另一个文件,info和error需要不同的日志格式 那先在PyCharm里新建一个项目,在这个项目下新建一个Logs文件夹,和getcwd.py文件.然后…
使用python3的email模块和smtplib模块可以实现发送邮件的动能.email模块用来生成email,smtplib模块用来发送邮件,接下来看如何在生成测试报告之后,并将报告放在邮件附件中并发送给项目组的人,在framework文件夹下新建my_email.py文件,项目结构如下. ​ ​ 以qq邮箱为例,在使用qq邮箱的SMTP服务时,需要在qq邮箱-账户中先开启,并且生成授权码,然后密码那里填写授权码 具体代码如下. #!/usr/bin/python3 import smtpli…
在完成了日志类封装之后,那我们就要对测试基类进行实现,在其中对一些请求再次封装,在项目下新建一个framework文件夹,在文件夹下新建Base_Page.py文件,这是用来写测试基类的文件.在项目下新建screenshots文件件,用来存放截图.项目结构如下. ​ 具体怎么封装还是要看被测试需要什么,只能提供一个大致思路,我项目能用的封装,你项目并不一定能用 测试基类的思路就是把所有能公用的方法全部封装,并加上日志输出.报错截图等. 看下Base_Page.py下具体代码 from Logs.…
页面对象模型Page Object Modal是一种脚本设计模型,将页面元素,业务操作分割,当实际页面发生变化的时候,只需要修改页面元素文件,业务操作不需要修改. 具体实现需要先写一个页面公共类,里面写公共的方法,比如把元素定位,元素操作等方法重新封装.之后所有页面类继承页面公共类,页面类中只写该页面需要定位的元素,并把对应元素的操作封装成一个个方法.最后测试类调用这些方法组成一个业务测试用例. 还是以百度搜索为例子 ​ framework包下面放一些公共类 pageobject包下面放需要测试…
可以自行百度学习下单元测试框架,或者看Python3学习笔记26-unittest模块 在项目下新建一个entrance.py文件.并使用之前的测试用例进行演示.目前项目结构. ​ 在entrance.py文件加上如下代码并运行 import testsuites.test_baidu import unittest if __name__ == "__main__": suite = unittest.TestSuite() suite.addTest(testsuites.test…
之前都是只有一个页面,一个用例.这次两个页面.两个测试用例.其实界面自动化测试最大的难点在于driver的传递,需要保持唯一性.另外就是断言的难点. 修改之前的BaiduPage,新增部分代码 from Selenium_lesson.framework.Base_Page import BasePage class BaiduPage(BasePage): kw = ['id','kw']#搜索输入框 su = ['id','su']#搜索按钮 new = ['link','新闻'] def…
使用HTMLTestRunner可以生成测试报告.HTMLTestRunner是unittest模块下的一个拓展,原生的生成报告样式比较丑,GitHub上有大佬优化过后的版本:GitHub地址.下载之后解压应该是这样的 ​ 我们需要使用的是HTMLTestRunnerCN.py和EN.py 这两个.一个生成的是中文报告,一个生成的是英文报告.想用哪个版本的就把对应版本的.py文件复制到pytho3安装目录下的Lib文件夹下.能import进来相应的文件就可以了.最下面两个test开头的.py文件…
一.自动化测试框架 感谢木棉花的漂泊分享,内容转自链接:http://www.cnblogs.com/fengyiru6369/p/8053035.html 1.什么是自动化测试框架 简单来说,自动化测试框架就是由一些标准,协议,规则组成,提供脚本运行的环境.自动化测试框架能够提供很多便利给用户高效完成一些事情,例如,结构清晰开发脚本,多种方式.平台执行脚本,良好的报告去跟踪脚本执行结果. 框架具有以下一些优点: 1)代码复用 2)最大覆盖率 3)很低成本维护 4)很少人工干预 5)简单报告输出…
1.什么是自动化测试框架 简单来说,自动化测试框架就是由一些标准,协议,规则组成,提供脚本运行的环境.自动化测试框架能够提供很多便利给用户高效完成一些事情,例如,结构清晰开发脚本,多种方式.平台执行脚本,良好的报告去跟踪脚本执行结果. 框架具有以下一些优点: 1)代码复用 2)最大覆盖率 3)很低成本维护 4)很少人工干预 5)简单报告输出 2.常见的测试框架分类 好多Selenium自动化测试开发人员是有QTP那边转过来的,所以,他们在早期设计的框架大致可分为以下几类: 1)基于模块的测试框架…
1. 什么是自动化测试框架 在了解什么是自动化测试框架之前,先了解一下什么叫框架?框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法:另一种定义认为,框架是可被应用开发者定制的应用骨架.前者是从应用方面,而后者是从目的方面给出的定 义. 从框架的定义可以了解,框架可以是被重用的基础平台:框架也可以是组织架构类的东西.其实后者更为贴切,因为框和架本来就是组织和归类所用的. 所以自动化测试框架的定义为:由一个或多个自动化测试基础模块.自动化测试管理模块.自动化测试统计模块等组…
1. 简介 前边宏哥一边一边的喊框架,就如同一边一边的喊狼来了!狼来了!.....这回是狼没有来,框架真的来了.从本文开始宏哥将会一步一步介绍,如何从无到有地创建自己的第一个自动化测试框架.这一篇,我们介绍,如何封装自己的日志类和浏览器引擎类. 2. 创建项目层级结构 如何创建,怎么创建.这个就需要我们前边介绍的框架概要设计以及框架的详细设计的思维导图,宏哥就是根据那个图,轻松地.清楚的.思路清晰地一步一步创建项目层级结构. 相关步骤: 1. 打开PyCharm,创建如下格式的项目层级结构,为了…
1.简介 前面文章,我们实现了框架的一部分功能,包括日志类和浏览器引擎类的封装,今天我们继续封装一个基类和介绍如何实现POM.关于基类,是这样定义的:把一些常见的页面操作的selenium封装到base_page.py这个类文件,以后每个POM中的页面类,都继承这个基类,这样每个页面类都有基类的方法,这个我们会在这篇文章由宏哥实现. 2.项目层级结构 1. 上一篇中我们已经创建好了项目层级结构,具体项目层级结构如下图.这里不再赘述,相关文件也如下: 3. 定位和截图类封装 1. 在实现封装基类里…
1. 简介 其实,到前面这一篇文章,简单的Python+Selenium自动化测试框架就已经算实现了.接下来的主要是介绍,unittest管理脚本,如何如何加载执行脚本,再就是采用第三方插件,实现输出html的测试报告.本文来介绍下,在同一个类中,多个测试函数时候,测试固件如何写和进一步实现POM和可能遇到问题解决办法. 2. 一个类文件多个测试方法情况下测试固件的写法 为了说明这个问题,我们在之前的测试类基础上,再写一个test_search2()的测试用例,看看会发生什么. 2.1 代码实现…
原文地址https://blog.csdn.net/u011541946/article/details/70269965 作者:Anthony_tester 来源:CSDN    博客地址https://blog.csdn.net/u011541946 前面文章,我们实现了框架的一部分功能,包括日志类和浏览器引擎类的封装,今天我们继续封装一个基类和介绍如何实现POM.关于基类,是这样定义的:把一些常见的页面操作的selenium封装到base_page.py这个类文件,以后每个POM中的页面类…
前一篇文章我们知道了,如何去封装几个简单的Selenium方法到我们自定义的类,这次我们编写一个类,叫浏览器引擎类,通过更改一个字符串的值,利用if语句去判断和控制启动那个浏览器.这里我们暂时,支持三大浏览器(IE,Chrome,Firefox).这里有一个前提条件,在基础篇中,启动三大浏览器的driver文件,检查下你的Python安装路径下有没有这三个driver插件,如果没有,请回到基础篇的如何启动火狐和IE浏览器文章去看看如何做. 我们继续在test1这个包下新建一个browser_en…
Python_selenium封装一个浏览器引擎类 现在我们在编写一个类,叫浏览器引擎类(此例为:启动浏览器),将文件名命名为browser.py,代码下面通过更改一个字符串的值,运用if语句判断和控制启动浏览器. 在之前的工程包(pro1)下面新建一个browser.py文件,代码如下所示 #coding:utf-8 from selenium import webdriver class Browser(object): def __init__(self,driver): self.dri…
前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest.       unittest是一个单元测试框架,是Python编程的单元测试框架.有时候,也做叫做“PyUnit”,是Junit的Python语言版本.这里了解下,Junit是Java语言的单元测试框架,Java还有一个很好用的单元测试框架叫TestNG,本系列只学习Python,所以只需要unittest是Pytho…
1. 简介 上一篇介绍了自动化框架的架构,今天宏哥就带领小伙伴或者童鞋们开始开工往这个框架里开始添砖加瓦.主要是介绍一个框架unittest单元测试框架和一种设计思想POM. 2. unittest单元测试框架 前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest. unittest是一个单元测试框架,是Python编程的单元测试框架.有时候,也做叫做“PyUnit”,是J…
前面我们介绍了Python中的单元测试框架unittest,以后我们所有的测试类文件,都采用unittest来辅助我们进行debug和脚本开发.搞定了debug机制和确定了unittest来进行创建和管理我们的自动化测试脚本,接下来我们来考虑下,框架设计中一种很普遍的设计思想-POM(Page Object Model) POM,中文字母意思是,页面对象模型,POM是一种最近几年非常流行的自动化测试模型,或者思想,POM不是一个框架,就是一个解决问题的思想.采用POM的目的,是为了解决前端中UI…
本文代码:YoungHeart-Chapter-03.zip 没有基类的App都不是好App. 因为iOS使用的是mvc模式的开发模式,所以,业务逻辑基本都在每个页面相应的ViewController中.这些页面有很多相同的逻辑,所以,我们有必要设计一个BaseViewController基类,将这部分共有逻辑抽象到基类中. 具体是哪些相同的逻辑呢? 1)重新规划页面的生命周期——第4篇文章会专门介绍. 2)iOS处理内存警告——在讲到内存优化的时候,会介绍. 3)作为跳转器的目标页,接收传递来…
POM(Page Object Model):页面对象模型,POM是一种最近几年非常流行的自动化测试模型,或者思想,POM不是一个框架,就是一个解决问题的思想.采用POM的目的,是为了解决前端中UI变化频繁,从而造成测试自动化脚本维护的成本越来越大.下图,形象描述了POM的好处. 从上图看出,采取了POM设计思路和不采取的区别,左侧把测试代码和页面元素都写在一个类文件,如果需要更改页面,那么就要修改页面元素定位,从而要修改这个类中测试代码,这个看起来和混乱.右侧,采取POM后,主要的区别就是,把…
选择器引擎涉及相关概念 概念 以Sizzle的主函数声明为例,来说明引擎的相关概念. function Sizzle(selector, context, results, seed) { //... } 种子集seed:如果CSS选择器非常复杂,需要分几步来得到结果,那么第一次得到的元素集合就叫种子集.Sizzle引擎的解析基本上是由右到左,种子集中的一部分就是我们最后得到的元素.如果引擎是由左到右,那么就只是依次查询兄弟与子节点. 结果集results:选择器引擎最终返回的元素集合,约定要与…
easing-js <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> #taxiway { width: 800px; height: 100px; background: #E8E8EF; position: relative; } #move { position: absolute; left:…
选择符 选择符是指CSS样式规则最左边的部分,例如 p{},#id{},.class{},p.class{} 等等 总共可以分为四大类: 并联选择器 => 逗号 => $('div,span') 简单选择器 => ID,CLASS,TAG,ATTR,* => $('#id'),$('.class'),$('div'),$('[attr]'),$('*') 关系选择器 => ' '.'>'.'+'.'~' => $('div span').$('div>spa…
一.自动化测试框架 1.什么是自动化测试框架 简单来说,自动化测试框架就是由一些标准,协议,规则组成,提供脚本运行的环境.自动化测试框架能够提供很多便利给用户高效完成一些事情,例如,结构清晰开发脚本,多种方式.平台执行脚本,良好的报告去跟踪脚本执行结果. 框架具有以下一些优点: 1)代码复用 2)最大覆盖率 3)很低成本维护 4)很少人工干预 5)简单报告输出 2.常见的测试框架分类 好多Selenium自动化测试开发人员是有QTP那边转过来的,所以,他们在早期设计的框架大致可分为以下几类: 1…
1.简介 上一篇宏哥介绍了如何设计支持不同浏览器测试,宏哥的方法就是通过来切换配置文件设置的浏览器名称的值,来确定启动什么浏览器进行脚本测试.宏哥将这个叫做浏览器引擎类.这个类负责获取浏览器类型和启动不同浏览器,并做一些前提操作,例如:最大化浏览器窗口和,打开测试服务器地址. 今天这篇宏哥打算介绍如何封装几个Selenium公共的方法到页面基类中去.首先宏哥给小伙伴或者童鞋们解释一下页面基类,看到基类,我们想起了继承.没错,在这个框架基于POM的思想上,我们需要利用继承的特点,来实现,减少我们重…
目录 7.Excel数据读取 7.1.读取配置文件 7.1.编写Excel操作类 8.用例组装 9.用例运行结果校验 10.运行用例 11 .小结 上一篇:Python3简易接口自动化测试框架设计与实现(上) 7.Excel数据读取 用例是放在Excel中的,用xlrd来读取数据,写数据需要用到xluntils,先安装: pip install xlrd pip install xluntils 7.1.读取配置文件 读取Excel数据,我们需要知道对应的行和列,列相对固定,在配置文件setti…