自动化测试之二三事儿

自动化测试里面有三大利器:

  • 语言Python
  • UI自动化工具Selenium
  • 验收测试框架RobotFramework

巧的是三个利器都有2.x和3.x的版本。本文打算就这个话题来做个小结。

Python

雪诺.png

Python 2

Python 2 发布于 2000 年年底,意味着较之先前版本,这是一种更加清晰和更具包容性的语言开发过程。而先前版本的 Python 应用的是 PEP (Python 增强协议),这种技术规范能向 Python 社区成员提供信息或描述这种语言的新特性。据说2020年也是Python2的终结之年。

Python 3

Python 3 被视为 Python 的未来,是目前正在开发中的语言版本。(最新开发版本为3.7),Python 3 于 2008 年年末发布,重点是清理代码库并删除冗余,清晰地表明只能用一种方式来执行给定的任务。


差别1:Print

在 Python 2 中, print 被视为一个语句而不是一个函数,这是一个典型的容易弄混的地方,因为在 Python 中的许多操作都需要括号内的参数来执行。如果在 Python 2 中你想要你的控制台输出 ”Winter Is Coming”,你应该写下这样的 print 语句:

print "Winter Is Coming"

在使用 Python 3 时,print()会被显式地视为一个函数,因此要输出上面相同的字符串,你可以使用这种非常简单且易于使用的函数语法:

print('Winter Is Coming')

这种改变使得 Python 的语法更加一致,并且在不同的 print 函数之间进行切换更加容易。就方便性而言,print()语法也与 Python 2.7 向后兼容,因此您的 Python 3 print()函数可以在任一版本中运行。

差别2:支持 Unicode
还是上面那一个例子,如果你在Python2里想输出“凛冬已至”,当直接使用print时,

print '凛冬已至'

会遇到类似于以下的异常:

Non-ASCII character '\xe5' in file D:/Python/Demo/2.1.1.py on line 2, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

这是因为Python 2 默认使用 ASCII 字母表,因此当您输入“凛冬已至”时, Python 2 将以 ASCII 格式处理字符串。被限定为在多种扩展形式上的数百个字符,用ASCII 进行字符编码并不是一种非常灵活的方法,特别是使用非英语字符时。

要使用更通用和更强大的Unicode字符编码,这种编码支持超过128,000个跨越现今和历史的脚本和符号集的字符,你必须输入

u“凛冬已至”

, 前缀 u 代表 Unicode。

Python 3 默认使用 Unicode,这节省了程序员多余的开发时间,并且您可以轻松地在程序中直接键入和显示更多的字符。因为 Unicode 支持更强大的语言字符多样性以及 emoji 的显示,所以将它作为默认字符编码来使用,能确保全球的移动设备在您的开发项目中都能得到支持。

至于是为什么会使用 asscii 作为默认编码,原因在于 Python 2 出来的时候还没出现 Unicode。

另外可以使用到Built-in里面的另外两个函数:decode和encode

decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。

encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。

Python2和3在一些函数或者库的处理上还有很多不一样的地方,大家可以继续慢慢摸索,放一个网上传的Python2和3区别的神图(最好无限放大来查看):

Python2和3区别.png

Selenium

Selenium是一组web自动化测试工具集,它由以下几个部分构成:

  • Selenium IDE(Integrated Development Environment) 这是Firefox浏览器的一个插件,用于录制和回放selenium测试脚本。

  • WebDriver和RC 它提供了各种编程语言API的支持,例如java、python、ruby、php、.net等等,能够与不同的浏览器进行交互,驱动浏览器进行自动化测试。

  • Grid 它提供了分布式测试和并行测试的能力,能够帮助我们大幅的减少测试的执行时间。

Selenium2和Selenium3的关系其实用下面的一张图就可以说清楚:

Selenium变化图.png

相比较于Selenium2来说,Selenium 3.0(2016年7月左右发布)有了更新的特性加入,尤其是对Edge和safari原生驱动的支持,Edge驱动由MS提供,safari原生驱动由Apple提供。

具体来说,Selenium3.0的更新内容包括以下:

  • 去掉了对selenium rc的支持。

  • 全面拥抱java 8。

  • 支持macOS (Sierra or later),支持官方的safaridriver

  • 通过ms官方的webdriver server支持Edge浏览器。又是一个官方的版本,ms表示坚决支持webdriver协议的内容,这也意味着以前性能及稳定性都很差劲的ie driver应该逐渐被淘汰掉了。

  • 只支持ie 9.0版本以上。

  • 通过Mozilla官方的geckodriver来支持firefox。

总而言之,selenium 3.0在支持的原生驱动方面更为丰富,在2.0的基础上有了更多的改进。对于各位写自动化测试脚本的大家来说,最直观的感受应该就是2.0的时候支持不同的浏览器需要下载不同的浏览器驱动程序,3.0的时候只用下载一个geckodriver就搞定了。


RobotFramework

RobotFramework3.0.2(目前Pypi上的最新版本)的发布声明上声称:

Starting from Robot Framework 3.0, tests are executed from the command line using the robot script or by executing the robot module directly like python -m robot or jython -m robot. Older Robot Framework versions have Python interpreter specific pybot, jybot and ipybot scripts that still work but will be deprecated and removed in the future.

可以看出来RF3对测试脚本的执行上方式上有了微妙的更改,更大的变化是RF3是可以支持Python3编写的脚本。只是因为wxPython工具底层还未支持Python3的原因,RIDE目前还是只能在Python2的环境下运行。

RF上对于Selenium库的依赖以前有一段时间是Robotframework-Selenium2Library来支持,不过从最新的发布来看, SeleniumLibrary重新夺回了主动权:

SeleniumLibrary works with Selenium 2.53.6 or newer, including Selenium 3. It supports Python 2.7 as well as Python 3.3 or newer. In addition to the normal Python interpreter, it works also with PyPy and Jython.

综上所述,目前的自动化测试的环境可以用以下的三驾马车来搭:

Python 3.x + Selenium 3.x +Robotframework 3.x

欢迎来到3字头的时代,终于不用再2了~~~

3月的狮子.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容