Python Webdriver项目实战第5章测试模型:线性测试与脚本优化的开篇
python webdriver 项目实战

第5章 测试模型与测试脚本优化
第一节、测试模型介绍
线性测试
通过录制或者编写脚本,一个脚本能够完成用户的一套完整操作,并且可以通过对脚本的回放来进行自动化测试。这是早期进行自动化测试的一种形式,都需要有登录脚本。那么,我们是否可以将登录脚本独立出来,调用单独的文件呢?
下面以快播私有云的登录退出测试用例为例:
#coding二utf-8
使用 selenium 库中的 webdriver 模块。
from
import By
from
import Keys
from
import Select
from
import NoSuchElementException
import unittest, time
从业务流程和用例分析来看,每一个自动化测试用例的执行过程是这样的:首先要执行登录操作;接着执行具体的操作,这些操作包括文件/文件夹的创建、删除、移动、重命名等;最后执行退出操作。像上面的测试用例那样,登录操作和退出操作是相对固定的。所以,我们能够将登录与退出操作进行模块化处理并调用。这样做,一方面无需编写重复代码,另一方面能够让测试用例更专注于具体的用例代码。
在与相同的文件夹下创建文件:
("user_name").clear()
("user_name") 执行发送操作,将 "username" 作为输入内容进行发送。
("user_pwd").clear()
("user_pwd") 输入 "123456" 。
("dl_an_subm it" ).click()
⑶
我们有必要补充一下 python 语言中方法的使用,这有助于我们自动化测试。
试脚本的开发。下面打开python IDLE:
函数的使用:
使用 def 关键字能够创建函数。在例 1 里,我们创建了 add()函数。这个函数默认接收两个参数 a 和 b。将 a 与 b 相加的结果赋予 c 。然后在函数内部把这个结果打印出来。
在例 2 中创建了 add2()函数。这次给 a、b 设置了默认值。接着对 a、b 进行加法运算。然后用 return 将结果返回。d 在接收 add2()时使用的是默认值。之后将 d 接收的结果打印出来。
类与方法的使用:
我们通过 class 关键字创建了一个 Counter 类。在这个类中,定义了 add()和 subtract()这两个方法。add()方法用于完成加法运算,subtract()方法用于完成减法运算。并且,将这两个方法计算出的结果进行了打印。
我们通过上面的例子明显发现,类的方法与函数有一个区别。在类的方法中,必须有一个额外的第一个参数,这个参数是 self。而在调用类的方法时,不必为这个 self 参数赋值。因为 self 参数所指的是对象本身,所以习惯上将其命名为 self。
为何Python给self赋值而你不必给self赋值
创建了一个类叫 MyClass,通过实例化 MyClass 就得到了 MyObject 这个对象,接着调用这个对象的方法,传入参数 a 和 b,在这个调用的过程当中,Python 会自动将其转为(MyObject, a, b),这便是 Python 的 self 的原理。你的类的方法即使不需要任何参数,也得给这个方法定义一个 self 参数。不过,在实例化调用的时候,我们不用理会这个参数。
面回到用例本身来讨论如何模块化和调用的,在文件中:
d elf):
这里使用的是一种方法,即针对 (driver 二)driver 自身的 driver。这一句具有重要性,因为如果不这样做,我们就无法在 ligin() 方法中利用 driver 来操作浏览器。
在 文件中:
首先将 login 文件导入进来,接着调用文件中的 login()方法。
下面笔者动手把退出的相关操作也模块化出去吧!
第三节、数据驱动(参数化)
在测试模型这一部分的数据驱动方面,我们已经讲解了怎样利用 Python 的 readlines()函数来对百度输入信息进行处理。
进行行参数化设置,读取其他循环的文件中的每一行数据。现在回顾一下实现参数化的方式。
#coding二utf-8
使用 selenium 库中的 webdriver 模块。同时导入 os 和 time 模块。
打开文件"D:\\abc\\",使用模式"r",创建一个名为 values 的对象,该对象为空。
()
#执行循环
for serch in values:
browser 二()
(””)
("kw").send_keys(serch)
("su").click()
()
open 方法以只读模式(r)打开本地文件,readlines 方法会逐行读取文件的内容。
通过 for 循环,serch 每次能够获取到文件里的一行数据。在定位到百度的输入框之后,就可以把数据传进去。
使用 send_keys(serch) 这个操作。通过不断地进行循环调用,直至将文件中的所有内容都读取完毕。
登录参数化(读取txt文件)
现在按照上面的思路,对自动化脚本中用户、名密