首先声明,本故事纯属虚构,不,是半虚构,如有雷同纯属巧合~
本故事由搜狗测试、搜狗QA、搜狗TEST冠名播出
万万没想到,duang~~搜狗测试公众号出现了,duang~~它还成长的如此迅速,欢迎广大测友多多传播、尽情传播、传出新体验
故事发生在搜狗测试团队的两个屌丝身上,愚人节快到了,来看看他们在唠什么。。。。。。
提示:他们聊的很兴奋,时间有点长,需要一点耐心往下读哦
雷子:搜狗测试大神们聊了不少高深的测试知识,我屌聊点什么呢?
小Q:别聊天了,我将要做一个自动化的测试内容,苦于无从下手啊,哪有心情聊天
雷子:哦?哈哈,难兄难弟,虽然困难之处不一样,但都有难!不过我还会那么一点,要不我们聊聊常用的自动化python脚本编写?
小Q:常用的?先唠两句啥是python脚本吧,这个我还不知道呢!
雷子:这个我不能定义,搜狗一下就知道,用途太广,在我们自动化测试里边几乎到处都是它的影子
小Q:那,它长什么样子呢?说再多也不如看一眼
雷子:不行啊,你先搜狗一下python是啥,然后我们再开始,也好有共同语言啊
小Q:好的,过会聊!
呼~一颗烟的功夫过去了,小Q过来了
小Q:看完了,大约知道python是什么了
雷子:那你介绍一下这个是什么呗
小Q:我只从自动化测试角度说一下理解,顾名思义,它可以长时间自己“自动地”运行测试任务,帮助我们做一些重复性工作
雷子:赞,精辟!我也有一点自己的理解,我觉得它是我们和机器交流的语言,需要“听、说、读、写”,会了这些就能帮助我们做事情了
小Q:不是吧,这怎么像小学生的作业,总不能不做事情啊
雷子:囧!恩,对,还有“做”
小Q:好了,别卖关子了,来点干货,这几个字太抽象,具体一点是什么样子的呢?
雷子:行,那么不论大小个,按顺序说吧。先说“听”,所谓的“听”指的是听得懂,就是知道我们要求它做什么;“说”指的是能够说出它知道的任何信息,包括但不限于自动运行在做什么、到什么状态了、运行的结果等等任何你想知道的内容;“读”指的是你不能一步一步的都告诉它怎么做啊,那还不如全都自己去做呢,要有一些自动生成的数据,它一看就懂就能自动去执行而不再依靠你一步步的教了;“写”指的是将他脑子里边的东西记录下来方便我们查阅等;“做”当然是最关键的一环,就是帮我们做我们想做的。
小Q:晕死了,不够具体,放在python讲几个实在点的
雷子:好,那么今天就非常简单的聊几句
举个小例子:愚人节04月01号快到了,我们有个抽奖活动,假设有个这样的想法,每个用户都有一个身份ID,假设这个ID最大是8位的整数,这些整数是已知的,简单用,就放在一个记事本里边吧,那么所有能够整除401的用户都有抽iphone6 plus大奖的机会,现在需要知道有多少用户有机会,怎么做?
小Q:100000000/8=12500000
雷子:o(╯□╰)o,亲,不是每个ID都有用户,这个8位指的是最大用户量,实际上仅仅有100W左右的量
小Q:好吧,你又没说清楚
雷子:好好,我的错,哈哈,继续
小Q:这时候要是手动去做,做不到,该怎么做?
雷子:这时候假设用python,先看python怎么处理一条数据的吧
第一步:准备一个计数器
第2步:得到这个id
第3步:进行求余运算
第4步:判断结果,满足条件的进行累加计数
第5步:输出结果
脚本如下:
sum = 0
user_id = 20151314
if user_id %401 == 0:
sum += 1
print sum
小Q:sum 、 user_id、 if 、 print 这么多全都要背下来啊?那得多难啊
雷子:当然不是了,只有一些基本的需要记住,比如你也可以写成这样:
haha = 0
haowan = 20151314
if haowan %401 == 0:
haha += 1
print haha
简单来讲,一般用到一个等于号的时候,左边的英文都是变量,可以随意命名,不过一般只能有字母、数字、下划线且第一个不能是数字
【可能很多人会说这个太简单,但是对于想要入门自动化测试或者学习python脚本的同学来说,hello word级别的资料有时候会给其带来更大的信心】
第一行,sum这个叫做变量,你可以随意命名,比如写成haha,sum = 0是初始化,表示一开始sum的值是0,这个“等于号”不是数学里边的等于号,而是赋值的意思
第二行,和第一行一样,初始化,其实这个数据应该是100W条数据,稍后再说怎么弄
第三行,这个是个判断语句,很容易理解,“如果用户的id求余401结果是0”,是不是很容易理解,不过一定注意那个等于号是两个等于号连起来写,后边的冒号表示满足这个条件的话去做哪些事情
第四行,表示sum = sum + 1,在程序里边,原本sum的值是0,如果满足,则加1,此时sum就是1了,这样一直下去,最终的数值就是满足条件的结果
第五行,打印一下最终的结果
如下:
小Q:太简单了,那么100W条数据怎么做呢?
雷子:
还是先看一下脚本:
file_stream = open('d:\\user_id.txt')
lines = file_stream.readlines()
lines_length = len(lines)
sum = 0
for i in range(0,lines_length):
user_id = int(lines[i])
if user_id %401 == 0:
sum += 1
print sum
也可以随意写:
du_wen_jian = open('d:\\user_id.txt')
mei_yi_hang = du_wen_jian.readlines()
hang_shu_liang = len(mei_yi_hang)
haha = 0
for mei_yi_ge in range(0,hang_shu_liang):
user_id = int(mei_yi_hang[mei_yi_ge])
if user_id %401 == 0:
haha += 1
print haha
小Q:一下子多了好多,脑细胞不够用,解释一下
雷子:好的,就喜欢问问题的人,这样方便交互、知道该说啥。【欢迎读者问各种测试有关的问题哦】首先介绍几个函数:
open()、len()、int()
open()是打开一个文件用的
len()可以理解长求括号里边数组或者列表的数量
int()是将字符串转换成整型
涉及到的名词过于简单,如果不知道还是去搜狗一下你就知道了
小Q:继续
雷子:
第一行,指的是打开含有用户ID数据的记事本文件,里边内容如下:
第二行,获取文件里边的一行行的数据
第三行,计算数据共有多少行
第四行,上边讲过,是初始化计数器
第五行,遍历每一行
剩下的上边讲过,如果不清楚具体的,搜狗一下【有非常多的例子,或者回复我们】
小Q:哈哈,我会python了
雷子:别急,这个非常的广大,你可以用它访问数据库、上网、解析视频、画图、图像处理、配置服务器等等,要踏实的去实践,你不可能会它所有的内容,上边的小例子,是经过特殊处理的,实际上QQ手机输入法将会在愚人节做一个活动(这边要对活动的服务器进行压力测试,数百万的加密测试数据就是用python辅助生成的),大奖不清楚是什么,到时候关注一下那上边的图片表情,会有惊喜哦
小Q:好的,我的自动化测试任务心里有点底了,今后我会经常搜狗上边搜索一下好的例子进行实践,顺便安装一下QQ手机输入法,抽个大奖去,等会,不会真的是401才行吧?
雷子:哈哈,必然不是啊,那个是假设
呼~小屌的聊天结束了,给你带来什么启发了呢?当然,由于本篇主要是迎合之前有朋友说想要知道一些入门级的实际的使用(当时说的是白盒测试吧),特此记录个小故事,抛砖引玉,一个好的开始往往预示着更加快速的前进,加油啊亲们~~~