python自动化测试框架的工具有哪些

用Python开发自动化测试脚本 - Python - 伯乐在线
& 用Python开发自动化测试脚本
通常对于一个稍具规模的系统,一些新的改动势必会带来一些额外的功能回归测试工作,而这个工作是非常繁杂的,人肉的方式一次又一次的重复将会非常的枯燥乏味。
而我们所希望的,是一种自动化回归脚本的方式,可以重复性的回归现有功能,并给出回归测试报告。
Python的世界有一个开源框架Splinter,可以非常棒的模拟浏览器的行为(从某种意义上也可以说是人的访问点击行为)。Splinter提供了丰富的API,可以获取页面的信息,以判断当前的行为所产生的结果
最简单的例子
browser = Browser(‘firefox’) 模拟一个浏览器
browser.visit(‘/login/login.htm’) 访问指定URL
browser.fill(‘TPL_username’,’test_04’) 填充表单用户名
browser.fill(‘TPL_password’,’taobao1234’) 填充表单密码
browser.find_by_value(‘登录’).first.click()表单提交
运行代码,splinter会打开你所指定的浏览器然后进行各种操作,像放电影一样的根据你的代码逻辑在你面前一步一步执行。
举个例子,现在我们要回归登录功能,以前我们从未开发过这样的脚本,所以现在我们首先要开发一个用于模拟登录行为的脚本。
如下面代码(其实是非常简短的一个代码):
#!/user/bin/python
# -*- coding: utf8 -*-
import sys
from splinter.browser import Browser
#####################################################
# global instance
CLOASE_AFTER_TEST = False
GBK = "gbk"
UTF8 = "utf8"
#####################################################
# encoding for console
reload(sys)
sys.setdefaultencoding(UTF8)
#####################################################
# small method
encoding = lambda x:x.encode('gbk')
#####################################################
def output(x):
encode and print
print encoding(x)
def resultMsg(x):
judge result and print, x : True or False
if x == True:
print 'pass'
print '[X]not pass'
print '--------------------------'
def checkresult(x):
check result message, x : the error message u want
resultMsg(browser.is_text_present(x))
def testLogin(desc, username, password, result):
fill login form message and submit, check result message and print
output(desc)
browser.fill('TPL_username',username.decode(UTF8))
browser.fill('TPL_password',password.decode(UTF8))
browser.find_by_value('登录').first.click()
checkresult(result)
__testUrl = '/login/login.htm?tpl_redirect_url=http%3A%2F%%2F'
# chrome driver : /p/selenium/wiki/ChromeDriver
# already support firefox
browser = Browser()
browser.visit(__testUrl)
output("测试页面:"+browser.title)
# test login
testLogin('测试未输入用户名','','','请输入会员名')
testLogin('测试未输入密码','qd_test_001','','请输入密码')
testLogin('测试帐户不存在','这是一个不存在的名字哦','xxxxxxx','该账户名不存在')
testLogin('测试成功登录','qd_test_001','taobao1234','继续登录前操作')
# test find password
output("测试[找回密码]链接")
browser.visit(__testUrl)
backPasswordLink = browser.find_link_by_text('取回密码')
if 1 == len(backPasswordLink):
backPasswordLink.first.click()
ru = re.pile(".*(reg/gp.htm).*", re.IGNORECASE), browser.url)
if ru is not None:
checkresult('找回密码')
output("测试找回密码链接失败")
except Exception,x:
if CLOASE_AFTER_TEST:
browser.quit()
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
#!/user/bin/python# -*- coding: utf8 -*-&import sysimport refrom splinter.browser import Browser&###################################################### global instanceCLOASE_AFTER_TEST = FalseGBK = "gbk"UTF8 = "utf8"&###################################################### encoding for consolereload(sys)sys.setdefaultencoding(UTF8)&###################################################### small methodencoding = lambda x:x.encode('gbk')&#####################################################def output(x):&&&&"""&&&&&&&&encode and print&&&&"""&&&&print encoding(x)&def resultMsg(x):&&&&"""&&&&&&&&judge result and print, x : True or False&&&&"""&&&&if x == True:&&&&&&&&print 'pass'&&&&else:&&&&&&&&print '[X]not pass'&&&&print '--------------------------'&def checkresult(x):&&&&"""&&&&&&&&check result message, x : the error message u want&&&&"""&&&&resultMsg(browser.is_text_present(x))&def testLogin(desc, username, password, result):&&&&"""&&&&&&&&fill login form message and submit, check result message and print&&&&"""&&&&output(desc)&&&&browser.fill('TPL_username',username.decode(UTF8))&&&&browser.fill('TPL_password',password.decode(UTF8))&&&&browser.find_by_value('登录').first.click()&&&&checkresult(result)&__testUrl = '/login/login.htm?tpl_redirect_url=http%3A%2F%%2F'&# chrome driver : /p/selenium/wiki/ChromeDriver# already support firefoxbrowser = Browser()browser.visit(__testUrl)&output("测试页面:"+browser.title)&try:&&&&# test login&&&&testLogin('测试未输入用户名','','','请输入会员名')&&&&testLogin('测试未输入密码','qd_test_001','','请输入密码')&&&&testLogin('测试帐户不存在','这是一个不存在的名字哦','xxxxxxx','该账户名不存在')&&&&testLogin('测试成功登录','qd_test_001','taobao1234','继续登录前操作')&&&&&# test find password&&&&output("测试[找回密码]链接")&&&&browser.visit(__testUrl)&&&&backPasswordLink = browser.find_link_by_text('取回密码')&&&&if 1 == len(backPasswordLink):&&&&&&&&backPasswordLink.first.click()&&&&&&&&ru = re.findall(re.compile(".*(reg/gp.htm).*", re.IGNORECASE), browser.url)&&&&&&&&if ru is not None:&&&&&&&&&&&&checkresult('找回密码')&&&&&&&&else:&&&&&&&&&&&&output("测试找回密码链接失败")&except Exception,x:&&&&print x&if CLOASE_AFTER_TEST:&&&&browser.quit()
从这几句我们可以看到,我们大致要测试的几种登录情况:
testLogin(‘测试未输入用户名’,”,”,’请输入会员名’)
testLogin(‘测试未输入密码’,'qd_test_001′,”,’请输入密码’)
testLogin(‘测试帐户不存在’,'这是一个不存在的名字哦’,'xxxxxxx’,'该账户名不存在’)
testLogin(‘测试成功登录’,'qd_test_001′,’taobao;,’继续登录前操作’)
跑一下脚本,可以得到结果:
————————————————————————–
测试页面:用户登录 – 手机淘宝网
测试未输入用户名
————————–
测试未输入密码
————————–
测试帐户不存在
————————–
测试成功登录
————————–
测试[找回密码]链接
————————————————————————-
这里的输出是我们代码控制的,你也可以将结果保存到文件中发送到某个监控系统或者邮箱。
首次开发完自动化回归脚本后,以后的功能调整,我们就不再需要人肉去操作,跑一下脚本,就可以得到结果。
Splinter 快速介绍
官方网站:/
官方介绍:
Splinter is an open source tool for testingweb applications using Python. It lets you automate browser actions, such asvisiting URLs and interacting with their items
可以模拟浏览器行为,访问指定的URL,并且可以指定不同的浏览器类型。比如firefox或者chrome等。不同的浏览器只要在本地安装对应的驱动,就可以在代码中通过名称指定来访问。
支持cookie操作,可以很方便的添加和删除cookie;
支持模拟鼠标的动作,比如滑动到某个按钮上,焦点离开某个按钮等等,对于带有动态提示的页面,如搜索引擎的关键字输入框的动态提示,可以非常方便的测试。
支持模拟键盘的输入操作,对input等控件的输入可以模拟用户的type过程。
支持直接运行js或者调用页面的js。
支持模拟上传文件。
对radio和checkbox有专门的api支持,非常方便;
支持快速的获取页面的元素或者判断是否存在文本,用于开发判断页面提示信息是否准确非常方便。
最重要的,splinter的API非常简单,配合官方的文档学习成本几乎是0,当然你得懂一些python语法。如果你比较了解js和css,你可能会像喜欢jquery一样喜欢它;
Splinter执行的时候会自动打开你指定的浏览器,访问指定的URL。
然后你所开发的模拟的任何行为,都会自动完成,你只需要坐在电脑面前,像看电影一样看着屏幕上各种动作自动完成然后收集结果即可。
可能感兴趣的话题
没有尝试后这种自动化测试,只是写些算法的代码而已!
关于 Python 频道
Python频道分享 Python 开发技术、相关的行业动态。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2016 伯乐在线
赞助云主机科技需要真相和数据,立志成为最有范儿的测试人社区.
python setup.py install
注:将会自动安装lettuce
Quick Start
step1 创建一个lub项目
lub -i gen
step2 熟悉一下生成的结构
完成创建后,将在当前目录生成webtc和apptc两个文件夹:分别用于放置web端和移动端的用例。
他们的结构是一模一样的:
--all.feature 自然语言描述的用例集
step_definitions
--steps.py 步骤action
--terrain.py 全局控制
step3 接下来我们先在webtc里做一个demo
我们拿百度首页为例,(又是百度 :{)
先编写一个简单的用例,打开all.feature进行编辑:
Feature: 测试用例集
Scenario: 百度首页
Given 打开 &&
When 在 &id& 为 &kw1& 的框中输入 &lud&
And 点击 &id& 为 &su1& 的按钮
接着,我们在steps.py中开始为我们这些自然语言写成的用例匹配行为:
# -*- coding:utf-8 -*-
# step definitions
from Lub.webtools.actions import *
from lettuce import *
@step(u'打开 &(.*)&')
def openurl(step,url):
lubget(world.browser,url)
@step(u'在 &(.*)& 为 &(.*)& 的框中输入 &(.*)&')
def typekey(step,typename,typekey,typeval):
lubinput(lubfind(world.browser,typename,typekey),typeval)
@step(u'点击 &(.*)& 为 &(.*)& 的按钮')
def clickelem(step,typename,typekey):
lubclick(lubfind(world.browser,typename,typekey))
这里,我们使用了lub封装的一些方法。
world是threading.local的一个实例,他只在当前线程保存值。
我们来看看全局控制terrain.py里有什么有趣的东西:
注:terrain是特殊的py,它将最优先运行:
# -*- coding:utf-8 -*-
# controls
from lettuce import *
from selenium import webdriver
@before.each_scenario
def startupdriver(scenario):
world.browser=webdriver.Firefox()
terrain中,我用了装饰器,非常实用,他们的全部内容可以参见lettuce这里
[lettuce terrain](http://lettuce.it/reference/terrain.html#reference-terrain “lettuce terrain”)
demo和例子可以在lubdemo目录下找到。
step4 运行!
你可以直接使用下面的命令快速运行你的用例集,注意,需要在当前结构目录下运行
也就是在webtc目录或者apptc下运行,不然会提示找不到features目录
lub -r normal
文档&扩展&其他
感谢以下这些优秀的框架
+ 猜你喜欢...
===== 关于 DiggerPlus =====
DiggerPlus是国内新锐测试人垂直内容博客,专注于挖掘测试工具,普及测试技术,专注于测试人能力提升,博客上线后就受到广大测试人的热烈追捧;此外,DiggerPlus深度整合评测资源,揭秘科技数据和真相,让读者更懂科技,更好地把玩科技。
我们始终保持"独立,客观,严谨,优秀"的优良作风,努力为读者带来源源不断的优质内容。想访问更多酷毙的测试人网站?赶紧来看看吧!
===== DiggerPlus Team =====
DiggerPlus Team是DiggerPlus官方发起的团队,这是一群热爱科技,热爱测试,喜欢深度挖掘的热血测试人,他们是评测师,测试专家。
我们欢迎优秀的测试人。
加入DiggerPlus,可以成为我们的,认证Dper拥有DiggerPlus独一无二的专栏并得到个人展示。
===== DiggerPlus 官方读者群 =====
+ 关于本文作者
Python/C/C++/Javascript程序员,持续学习者,目前专注于前端开发。
| 访问的主页
基于开源中国开发
最新文章热门文章随机文章
"Save Binary World"
使用合作网站账号快速登录,更多精彩等着您:◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
老王python (R) 版权所有 备案号:湘ICP备号当前位置:
Python高级自动化测试实战
Python高级自动化测试实战
学习费用:现场班7000(目前北京本地支持现场面授),网络班6000(其他地域或者北京离教室远的同学可以选择网络班)。
学习时段:每周的周六或者周日一天课,平时晚上不上课。
学习时长:12周。
课后视频:每节课都会有课后视频,提供给学员下载后复习,每个班提供每个班上课后的视频。
报名方式:联系Besttest官方客服QQ或者咨询客服电话进行相关问题的询问,确认后交费报名,然后进入学员群。报名以进入学员群为准,由于Besttest培训质量高学员就业率以及就业质量非常之高,得到很多企业的认可,所以Besttest不接受任何预约留座,一切以进入学员群时间为准。
支付方式:支付宝、银行卡、以及企业对公账户(除非是公司委培,不然不建议走企业对公账户,走企业对公账户会开发票,需要单独交纳税点,税点8%,单独另外支付)。支付宝、银行卡、企业对公账户请单独咨询官方客服。
学费分期:不接受分期付款。
一些常见问题的问答:
1.Besttest的优势是什么?
&&&&A:Besttest所有老师均来真正自一线互联网企业(再次提醒大家认清培训机构,有些根本没有做过
的就说自己是性能测试高手,照着一些书籍直接开念都是;明明去一些不知名的公司的讲师,然后对外宣传的是来自阿里、来自百度、来自腾讯,那么大家可以问一下那些所谓的讲师:百度在北京有几个办公楼?百度质量部的老大是谁?腾讯有几个T4的工程师?阿里的廉政部在哪办公?他们在BAT做的具体是哪个项目?他们见过真正的百度质量部的面试题库么?敢把名字告诉出来,去BAT验明真身么?),所有Besttest老师均可以在BAT内网里查询工作经历,请大家谨防忽悠,避免上当受骗。
& &&B:Besttest老师均战斗在一线互联网公司的最前沿,因为只有这样才能接触到最前沿的技术,只有这样才知道企业需要什么样的技术需要什么样的人才,只有这样才会一只给学生带来最新最实用的技术,而不像其他机构一样只讲一个测试工具。
& & C:Besttest有最强大的就业,目前Besttest大批学员入职了BAT等一线互联网公司,并且一直对外展现最真实学员就业的Offer。
& & D:Besttest老师上课全程共享桌面,不会照着写好的PPT照本宣科,照本宣科,说明老师没有什么真本事。
& & E:We are 伐木累。Besttest所有学员组成了一个大家庭,我们有爱、互相帮助。
2.平时晚上上课吗?
& &&平时晚上不上课,因为不少同学平时晚上会加班,回家会比较晚,如果晚上上课的会会导致很多学生晚上没时间跟着学习,从而耽误整个学习的质量。大家知道,晚上上课,这样我们会招生更快,但是为了对得起学员的学费,为了学生真正的学有所得,为了学生的学习质量,所以besttest一直坚持每周末只上课一天,而不会像其他机构为了加快招生进度从而不顾学生情况晚上上课。
3.为什么不周末连上两天课?
& & Besttest一直认为学习中最重要的学习方法是动手练习,然后思考、总结。所以我们只安排一个班每周末一天课,这样其他的时间学员可以有时间去动手练习,然后在不断的练习过程中去回顾、吸收、理解、消化、吸收、总结所学的内容,从而达到良好的学习质量。
4.四个月的性能学习时长够么?能学到很多东西吗?
& &虽然上课的时间只有4个月的周末时间,但是其实这4个月内学员一直在不断的学习,从开始上课到毕业,学员是真的整整花了4个月时间在学习,因为每节课后都会有大量而适当的课后作业要求学员去完成,从未形成大量的知识的吸收,再加上在上课过程中大大小小的项目的实践,从而达到4月的培训时间能形成别人2-6年左右性能测试经验的知识和能力的积累。
5.有时候周末如果加班上不了课怎么办?
& &&在每次课程结束后,会形成当天上课的高清视频,供学生下载后进行观看,从而进行复习或者补习,解决学生的后顾之忧。
6.全款获得的免费重修是什么意思?
& &&免费重修是指如果学员因为出差或者长时间的周末加班导致一段时间内课程没有听,落下了一些课程,这样学员可以在以后自己时间方便的情况下,跟随后面的班级免费重新学习一次。
7.毕业会推荐工作么?
& &&由于Besttest老师都长期扎根于一线知名互联网企业,所以Besttest毕业学员会获得很多一线知名互联网企业的内推渠道,比如阿里、百度、腾讯、搜狗、搜狐、去哪网、美团、新浪、奇虎360等。同时Besttest以往毕业学员都纷纷入职,且有很多做的都是管理岗,很多Besttest毕业学员也会直接在Besttest学员中直接发布内部招聘信息,So,你懂的。
8.besttest学员的就业情况怎样?
& &&Besttest以往学员找工作的均已找到工作,并且平均工资都在13000元/月以上,很多学员都入职了BAT等一线互联网企业,涌现了一些年薪32W、38W、40W等的明星学员,从而是升职加薪、赢娶白富美、走向人生巅峰。
9.besttest学员的offer都是真实的吗?
& &&Besttest率先发布学生真实的就业Offer,从而导致的其他培训机构造假抄袭发布他们所谓的学员就业Offer。
& & Besttest郑重承诺:安大叔QQ空间所发的全部学生就业Offer均为真实的学员就业Offer,没有任何的造假与编造。
& & 大家可以想一想,每个Offer我们所有的学员都知道,且我们的学员都能看到,我们学员都在安大叔的QQ好友里,且很多Offer下面都有学员当时的评论,如果造假的话,学员立马就会揭穿,由于我们的培训质量所以Besttest能做到不断的去展现学员的真实就业Offer。
& & 同时也请大家理性判断,不会被其他培训机构虚假的学员就业Offer所蒙骗,只有敢真正的把学员就业Offer给贴出来给所有学员对质的才是真正的学员就业Offer,那些只发一个“恭喜XXX同学就业到XX公司”或者所谓学员就业公司但却没有真正的offer贴出来的,肯定是虚假学员就业Offer。
10.besttest除了北上深其他地方的就业情况怎样?
& &Besttest网络班学员目前除了上海、深圳外还有福州、重庆、成都、厦门、武汉、南京、天津、广州、苏州、杭州、长沙、苏州、郑州、大连、青岛、长沙、哈尔滨的毕业学员,这些地域的学员目前都已经全部就业,且拿的工资在当地都属于高工资,拿成都举例,就有好几个毕业学员拿到了9k、10k、12k的Offer。
11.现场班与网络班的区别是什么?
现场班就是在教室上课,网络班是通过YY进行上课,跟随着现场班的同学一起上课,而不是看视频。老师上课全程共享桌面,所有学员可以全程看到老师的桌面、老师的任何操作、老师的任何话语。Besttest老师全程脱稿讲课,不像其他培训机构全在不照着PPT念照本宣科。
再次说明,安大叔不卖任何上课视频,因为以往学员是收费培训,所以为了学员利益,安大叔与风落、小马哥绝对不会为了所谓的利益去售卖上课的视频,更不会将给学生上课的视频放在一些网站上进行廉价的贩卖,一切为学生利益出发。大家都知道视频做完之后直接挂在网上贩卖对于老师会很轻松,但现在Besttest每个班的每堂课都是Besttest老师从头讲到尾,所以安大叔嗓子一直不好,为了学生能真正的学到东西,能真正的对得起学员付出的金钱和时间,Besttest一直坚持的是老师亲自授课、亲自带动学生进行学习,不抛弃不放弃任何一个学员。
12.学员的答疑怎么办?
& &&不管是网络班还是现场班学员,所有问题的答疑在上课时候可以直接QQ、YY进行提问,老师会及时进行解答。
& & &非上课时间,所有同学都可以通过QQ、QQ群、电话、微信进行问题的提问,老师会在第一时间进行解答,且目前每个班都请了5个以上的助教,帮助大家解答问题。
课程大纲:
&第一阶段:Python基础入门
本阶段面向开发语言基础较低,准备选择一门语言一技傍身的测试或者运维人员
1、 阶段目标
通过本阶段的学习,开始对脚本语言有清晰的认识,能够编写脚本用于解决工作中遇到的问题。引导学员编程入门,快速提升编程能力。
2、 课时安排
共20课时,涵盖
核心内容和高级主题
3、 课程大纲
1、 python简介和快速入门
2、 python基础
3、 python对象
4、 数字、字符串、列表、元组、字典、集合
5、 条件循环和循环、文件读写
6、 错误和异常
7、 函数和函数式编程、模块、对象和面向对象编程
8、 正则表达式
9、 网络编程
10、 多线程编程、多进程编程&
11、 实践项目
第二阶段:Python自动化进阶
本阶段面向在
方向上具备初级工作经验,&但是在处理日常工作时对工具的运用又显得捉襟见肘的自动化测试人员。
1、 阶段目标:&
通过本阶段学习,可以熟练的使用Python解决实际遇到的自动化测试问题,并且形成针对自动化测试问题的解决思路和方法。
2、 预备知识:&
Python&基础、了解Python数据类型、了解Python标准库;&
3、 课时安排:
8课时,内容覆盖单元测试、相关测试框架等多个方面。&
4、 课程大纲:&
l Unittest单元测试,实现后端应用接口测试自动化,介绍几种接口协议的测试,如thrift、webservice、socket等
l 关键字驱动自动化测试框架Robot&Framework&
l Robot&Framework+selenium实现前端测试自动化
l 文档工具之Sphinx&利用doctest自动生成说明文档
关键字:自动化测试,python自动化,测试,自动化
max volume
full screen
Update Required
To play the media you will need to either update your browser to a recent version or update your .
Besttest,全称北京百测技术咨询有限公司,是目前中国唯一一家专业高端软件培训机构,长年致力于测试领域在职短期提升、企业内训、技术推广、免费公开课等多种服务方式,持续为软件测试工程师提供优秀的学习平台。

我要回帖

更多关于 python app自动化测试 的文章

 

随机推荐