本系列文默认各位有一定的测试理论基础、python基础
本系列文默认各位会百度,学习自动化系列的课程,默认各位已经配置好了相关环境,默认安装了编译器。
啊啊啊啊啊,迟来的第二天,最近太忙了,然后写博文这件事情,就给耽搁了一下,实在是不该。下次应该再晚也要输出文章,flag 先立起来再说,争取做到,吾日三省吾身。
前面第一篇我们学习了selenium的基本操作,也带着大家写了一个脚本,今天我们主要是来看一下如何用数据驱动测试。
那么这里问题来了
自动化测试的模型都有哪些你们知道吗?
1、线性测试
单纯的模拟自动化,上一篇讲的就是这个
2、模块与类库
将重复的操作封装成公共模块,用的时候进行调用
3、关键字驱动
RF就是关键词来驱动的主流框架
4、数据驱动测试
我们要讲的,其实就是参数化,然后我们可以用多种方式来管理这些参数化的数据。
那么如何参数化呢,首先我们以登陆邮箱为例,写一个测试脚本,test_mail.py
from time import sleep
from selenium import webdriver
driver=webdriver.Chrome()
driver.get("http://www.126.com/")
driver.maximize_window()
sleep(2)
driver.switch_to.frame(driver.find_element_by_xpath("//iframe[starts-with(@id, 'x-URS-iframe')]"))
driver.find_element_by_name("email").clear()
driver.find_element_by_name("email").send_keys("username")
driver.find_element_by_name("password").clear()
driver.find_element_by_name("password").send_keys("password")
driver.find_element_by_id("dologin").click()
sleep(5)
driver.find_elements_by_link_text('退出').click()
driver.quit()
注意:这里是需要验证码的,这个验证码的解决,在实际的测试中,我们一般是设置一个万能的验证码或者是让开发屏蔽掉。
还有这里有一个点,就是iframe标签,这里我一开始尝试的是swich-to到iframe页面,但是他的id也是动态的,还是没办法进入到iframe下,然后经过度娘的洗礼下,找到了如上的方法,就是先通过xpath进入到iframe页面,然后再去通过id定位。
好了,接下来我们是不是要考虑邮箱有哪些功能,比如是不是可以发送邮件,查看,删除
而如果说我们有大量的操作,或者是不同的用户都要来进行这些功能,是不是会有大量的登录以及退出的工作。
那么这些工作,我们再来写一个文件,把这些操作封装成一个类test_module.py
初始化一下driver,然后调用一下selef.driver实现登录退出
class Mail:
def __init__(self,driver):
self.driver=driver
def login(self):
self.driver.switch_to.frame(self.driver.find_element_by_xpath("//iframe[starts-with(@id, 'x-URS-iframe')]"))
self.driver.find_element_by_name("email").clear()
self.driver.find_element_by_name("email").send_keys("username")
self.driver.find_element_by_name("password").clear()
self.driver.find_element_by_name("password").send_keys("password")
self.driver.find_element_by_id("dologin").click()
def logout(self):
self.driver.find_elements_by_link_text('退出').click()
到了这里,我们需要来调用我们上面写的login logout方法,修改一下我们前面的test_mail.py文件
from test_module import Mail
driver=webdriver.Chrome()
driver.get("http://www.126.com/")
mail=Mail(driver)
mail.login()
sleep(5)
mail.logout()
driver.quit()
这样以后我们在写用例的时候,只要用到了登录退出,就只需要调用一下Mail类中的方法就行了。
如果是登录功能,不同的用户名密码也是一样的。这个留给你们自己写一下。这里上传一下我写的。
修改一下test_moudle.py文件
def login(self,username,password):
self.driver.find_element_by_name("email").clear()
self.driver.find_element_by_name("email").send_keys("username")
self.driver.find_element_by_name("password").clear()
self.driver.find_element_by_name("password").send_keys("password")
self.driver.find_element_by_id("dologin").click()
接下来的测试用例,我们可以用不同的数据来调用login()方法
#登录账号密码为空
mail.login("","")
#用户名为空
mail.login('',"passsword")
#用户名密码错误
mail.login("error","error")
#管理员登录
maile.login("admin","admin123")
emmmmmmmmm,今天的数据驱动测试就写道这里了,等下次有时间,学习一下python中的读取数据文件,然后讲一下单院测试框架,哦了,拜了个拜