四种自动化测试模型实例及优缺点_自动化测试用例相互独立的例子

4.实例

公共模块:对登陆和退出进行模块化封装

以下的用户名密码到时候自己去申请,就不将笔者的用户密码贴出来了。

coding=utf-8

‘’’
Created on 2016-7-27
@author: Jennifer
Project:模块化驱动测试实例,将重复的登录脚本放在单独的脚本中供其他用例调用
‘’’
import time
class Login():
def user_login(self,driver):
username=driver.find_element_by_name(‘email’)
username.clear()
username.send_keys(‘username’)
time.sleep(0.1)

userpasswd=driver.find_element_by_name(‘password’)
userpasswd.clear()
userpasswd.send_keys(‘password’)
time.sleep(0.1)

loginbt=driver.find_element_by_id(‘dologin’)
loginbt.click()
time.sleep(3)

def user_logout(self,driver):
driver.find_element_by_link_text(u’退出’).click()
driver.quit()

写信用例:以下代码用了各种定位方法,值得学习,后续再重新对这部分进行总结

直接调用模块的登录和退出方法。

coding=utf-8

‘’’
Created on 2016-7-27
@author: Jennifer
Project:发送邮件
‘’’
from selenium import webdriver
import time

from test_5_2_public import Login #由于公共模块文件命名为test_5_2_public
driver=webdriver.Firefox()
driver.implicitly_wait(30)
driver.get(r’http://www.126.com/‘) #字符串加r,防止转义。
time.sleep(3)
driver.switch_to.frame(‘x-URS-iframe’)
#调用登录模块
Login().user_login(driver)
time.sleep(10)
#发送邮件
#点击发件箱
#_mail_component_61_61是动态id,所以不能用于定位
#driver.find_element_by_css_selector(’#_mail_component_61_61>span.oz0’).click()
#不能加u"//span[contains(text(),u’写 信’)]“,否则定位不到。
#以下定位是查找span标签有个文本(text)包含(contains)‘写 信’ 的元素,该定位方法重要
driver.find_element_by_xpath(”//span[contains(text(),‘写 信’)]“).click()
#填写收件人
driver.find_element_by_class_name(‘nui-editableAddr-ipt’).send_keys(r’xxx@163.com’)
#填写主题
#通过and连接更多的属性来唯一地标志一个元素
driver.find_element_by_xpath(”//input[@class=‘nui-ipt-input’ and @maxlength=‘256’]“).send_keys(u’自动化测试’)
#填写正文
#通过switch_to_frame()将当前定位切换到frame/iframe表单的内嵌页面中
driver.switch_to_frame(driver.find_element_by_class_name(‘APP-editor-iframe’))
#在内嵌页面中定位邮件内容位置
emailcontext=driver.find_element_by_class_name(‘nui-scroll’)
#填写邮件内容
emailcontext.send_keys(u’这是第一封自动化测试邮件’)
#通过switch_to().default_content()跳回最外层的页面
#注:不要写成switch_to().default_content(),否则报AttributeError: SwitchTo instance has no call method
driver.switch_to.default_content()
#driver.switch_to.parent_frame()
#点击发送
time.sleep(3)
#有可能存在元素不可见(查看元素是灰色的),会报ElementNotVisibleException错误
#包含发送二字的元素很多,所以还得再加上其他限制
#sendemails=driver.find_element_by_xpath(”//span[contains(text(),‘发送’)]“)
sendemails=driver.find_element_by_xpath(”//span[contains(text(),‘发送’) and @class=‘nui-btn-text’]")
time.sleep(3)

#校验邮件是否发送成功
try:
assert ‘发送成功’ in driver.page_source
except AssertionError:
print ‘邮件发送成功’
else:
print ‘邮件发送失败’

#调用退出模块
Login().user_logout(driver)

收信用例:

直接调用模块的登录和退出方法。

coding=utf-8

‘’’
Created on 2016-7-27
@author: Jennifer
Project:接收邮件
‘’’
from selenium import webdriver
import time

from test_5_2_public import Login
driver=webdriver.Firefox()
driver.implicitly_wait(30)
driver.get(r’http://www.126.com/') #字符串加r,防止转义。
time.sleep(3)
driver.switch_to.frame(‘x-URS-iframe’)
#调用登录模块
Login().user_login(driver)
time.sleep(10)
#接收邮件
#点击收信
#以下定位是查找span标签有个文本(text)包含(contains)‘收 信’ 的元素,该定位方法重要
driver.find_element_by_xpath(“//span[contains(text(),‘收 信’)]”).click()

#校验是否进入收件箱,没报错即进入
try:
#点击其中一封邮件
driver.find_element_by_xpath(“//div[@sign=‘letter’]”).click()
except Exception as e:
print e
else:
print ‘成功收信’

#调用退出模块
Login().user_logout(driver)

三,数据驱动测试

1.概念:

它将测试中的测试数据和操作分离,数据存放在另外一个文件中单独维护。

通过数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。

操作+重复操作+数据分开。

2.优点:

通过这种方式,将数据和重复操作分开,可以快速增加相似测试,完成不同数据情况下的测试。

3.缺点

暂无

4.实例

从excel表格读取用户名密码,登录邮箱。

以下的用户名密码到时候自己去申请,就不将笔者的用户密码贴出来了。

coding=utf-8

‘’’
Created on 2016-7-28
@author: Jennifer
Project:数据驱动测试,数据保存在excel中,需要导入xlrd模块
‘’’
from selenium import webdriver
import time
import xlrd

#将用户密码表格转换为用户密码列表
def exceltolist(excelfile,colnameindex=0,by_index=0):
excelfile=xlrd.open_workbook(excelfile) #打开excel表格

table = excelfile.sheets()[by_index] #默认获取sheet0页

table = excelfile.sheet_by_index(by_index)#默认获取sheet0页
nrows=table.nrows #获取excel的sheet0页的行数
colnames=table.row_values(colnameindex) #默认获取第0行的列表数据:name和password两个值
list =[] #建一个空列表,用来存放用户密码字典
for rownum in range(1,nrows): #初始行为0,从第1行开始
row = table.row_values(rownum) #获取某一行的列表数据
if row:
app = {} #建立一个空字典,存放某一组用户密码数据
for i in range(len(colnames)): #目前是2
app[colnames[i]] = row[i] #字典新增数据:循环两次,字典新增两对key-value
list.append(app) #将新增的字典数据,添加到列表数据中
return list

def Login():
file=r’D:\pythontest\rightpassword\userpassword.xls’
userlist=exceltolist(file)
for i in range(len(userlist)):
driver=webdriver.Firefox()
driver.get(r’http://www.126.com/') #字符串加r,防止转义。
time.sleep(3)

driver.switch_to.frame(‘x-URS-iframe’) #同上面语句一样,跳转到iframe框架
username=driver.find_element_by_name(‘email’)
username.clear()
username.send_keys(userlist[i][‘name’])
time.sleep(0.1)

userpasswd=driver.find_element_by_name(‘password’)
userpasswd.clear()
userpasswd.send_keys(userlist[i][‘password’])
time.sleep(0.1)

loginbt=driver.find_element_by_id(‘dologin’)
loginbt.click()
time.sleep(3)
try:
assert ‘网易邮箱’ in driver.title
except AssertionError:
print ‘用户%s邮箱登录失败’%(userlist[i][‘name’])
else:
print ‘用户%s邮箱登录成功’%(userlist[i][‘name’])

finally:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-CymACniN-1713021259696)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 26
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值