自动化测试模型
1、线性测试:每个测试脚本相对独立,一个脚本文件都是独立编写测试内容等,任何一个脚本都可以拿出来单独执行。开发和维护的成本很高。
2、模块化驱动测试:把重复的操作单独成立公关模块。如登陆模块,写好之后后续用例只需要调用对应模块即可。较好的解决了脚本重复问题。
3、数据驱动测试:针对测试数据改变而影响数据驱动测试而提出的。就是将测试数据做成参数化。不仅解决脚本重复的问题,还增加了可重用性和可维护性。测试数据改的时不需要修改测试代码。
4、关键字驱动测试:如目前市面的工具:QTP、Robot Frame.将底层代码封装,给用户提供独立的图形界面。以填表格的形式免除测试人员对写代码的恐惧,从而降低脚本的编写难度。
综上所述:UI 层的自动化测试的发展 由脚本发展到了成熟的自动化工具。我们学习自动化的过程也是从线性模型开始学习。工作过程中要实现的UI自动化则是采用模块驱动和数据驱动进行,当周围环境成熟到一定程度之后,可以将UI自动化测试做成关键字驱动测试,实现图形界面的自动化工具。
举例:
1、模块化驱动测试:
login.py class LoginModule(): def login(self, driver, username, password): # 输入用户名 # 进入用户名输入页面 driver.find_element_by_id("lbNormal").click() # 定位元素的时候一直报无法定位,后面查了资料才发现,这里有一个iframe iframe = driver.find_element_by_xpath('//div[@id="loginDiv"]/iframe') driver.switch_to.frame(iframe) driver.find_element_by_xpath("//div[@class = 'u-input box']/input[@name = 'email']").clear() driver.find_element_by_name("email").send_keys(username) # driver.find_element_by_id("j-inputtext dlemail j-nameforslide").send_keys(username) #用户密码 driver.find_element_by_name("password").clear() driver.find_element_by_name("password").send_keys(password) # driver.find_element_by_class_name("j-inputtext dlpwd").send_keys(password) #点击登录 driver.find_element_by_id("dologin").click() def loginout(self,driver): driver.find_element_by_link_text("退出").click() driver.quit()
测试用例:直接调用设置好的模块即可
loginTest.py from selenium import webdriver from cgi_projects.login import LoginModule driver = webdriver.Firefox() driver.implicitly_wait(10) driver.get("http://www.126.com") LoginModule().login(driver) LoginModule().loginout(driver)
2、数据驱动测试:
login.py:用户名、密码以参数形式传入
class LoginModule(): def login(self, driver, username, password): # 输入用户名 driver.find_element_by_id("inputid").clear() driver.find_element_by_id("inputid").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() def loginout(self,driver): driver.find_element_by_link_text("退出").click() driver.quit()
from selenium import webdriver from cgi_projects.login import LoginModule class logincase(): def __init__(self):
# 初始化浏览器、等待时长、url等 self.driver = webdriver.Firefox() self.driver.implicitly_wait(10) self.driver.get("http://www.126.com") def test_admin_login(self): username = 'admin' password = '123' LoginModule().login(self.driver,username,password) self.driver.quit() def test_guest_login(self): username = 'guest' password = '123' LoginModule().login(self.driver,username,password) self.driver.quit() #测试用例只需要关注用户名和密码,调用不同的方法,传入不同的参数测试用户登录 logincase().test_admin_login() logincase().test_guest_login()
1.作者:妮妮酱
2.出处:https://www.cnblogs.com/ninijiang/p/10990925.html
3.本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
4.如果文中有什么错误,欢迎指出。以免更多的人被误导。