自动化脚本编写实例
打开浏览器访问pto
登陆
修改管理员密码
单元测试数据
检查输入的数据合法性
获取输入错误数据之后的页面提示语
编写测试用例
编写单元测试类
1 单元测试中的通用操作
2 测试类
进行单元测试并生成测试报告
关闭浏览器
异常处理
1 点击函数
2 填写表单
3 元素加载
测试报告和代码示例
1 测试报告样例
2 完整的测试代码
完整demo请参看:https://github.com/niununu/k2p_web_test
本文以修改用户名密码单元为案例,编写测试脚本。完成修改用户名密码模块单元测试。
(ps.这个demo中登陆密码为“admin”)
1. 打开浏览器,访问p.to
# 1. 打开浏览器,访问p.to
driver = webdriver.Chrome()
def openDriver():
driver.get("http://p.to")
driver.maximize_window()
2. 登陆
登陆这动作传入的参数只有一个“用户密码”
需要执行的操作有两个:1. 向输入框输入密码 2. 点击确定
需要注意的是在登陆的时候可能出现页面还没有加载出来,我们的程序就开始填写表单的情况。
为了防止异常出现,编写了函数waitandSendkeys和waitandClick来处理异常。(后面将会介绍异常处理函数)
class loginClass(object):
"""docstring for login"""
def __init__(self, arg):
self.login_pwd = arg
def login(self):
waitandSendkeys('//*[@id="Pwd"]', self.login_pwd)
waitandClick('//*[@id="Save"]')
3. 修改管理员密码
需要传入的参数有两个:1.旧密码 2. 新密码
要注意的是由于修改管理员密码是一个弹窗,所以要判断等弹窗弹出之后再进行操作
class changePwdClass(object):
"""docstring for changePwdClass"""
def __init__(self, pwdNew, pwdOld):
self.pwdNew = pwdNew
self.pwdOld = pwdOld
def changeUserPwd(self):
waitandClick('//*[@id="Con"]/div[1]/ul[2]/li[1]')
waitandClick('//*[@id="Con"]/div[1]/ul[2]/li[1]/ul/li[3]')
waitforDisplay('//*[@id="_Widget"]')
waitandSendkeys('//*[@id="PwdOld"]', self.pwdOld)
waitandSendkeys('//*[@id="PwdNew"]', self.pwdNew)
waitandSendkeys('//*[@id="PwdCfm"]', self.pwdNew)
waitandClick('//*[@id="SavePwd"]')
到这里,我们可以完成修改用户名密码这一动作。后面将进行单元测试。
4. 单元测试数据
修改用户名密码这个功能的防呆规则如下:
输入项
允许输入
可为空
格式规范
合法性
依赖项
原管理员密码
是
否
字符串
长度限制:5-63; 字符集:英文字符集;
需要与管理员密码相同
新管理员密码
是
否
字符串
长度限制:5-63; 字符集:英文字符集;
确认管理员密码
是
否
字符串
需要与新管理员密码相同
根据防呆规则可以列出:1.可能出现的错误 2.出现错误时页面应有的提示语
#可能出现的错误
errcode = ['oldPwdErr', 'lenErr', 'charErr', 'matchErr', 'pwdSameErr',\
'oldPwdBlankErr', 'newPwdBlankErr']
#出现错误时页面应有的提示语
errTips = {
'oldPwdErr' :'原密码错误',
'lenErr' : '新密码长度应为5~63位',
'charErr' : "新密码包含非法字符",
'matchErr' : '两次密码输入不一致',
'pwdSameErr' : '新密码与原密码相同,请重新输入',
'oldPwdBlankErr' : '请输入原密码',
'newPwdBlankErr' : '请输入新密码'
}
5. 检查输入的数据合法性
需要输入的数据为要检查的data和登陆密码
def checkData(data, loginPwd):#检查顺序跟页面顺序相同
pwd = loginPwd
#'oldPwdBlankErr'
if data[