自动化测试学习之--自动化测试模型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/juhua2012/article/details/89150354

自动化测试模型

概念

自动化测试模型可以看作自动化测试框架与工具设计的思想。自动化测试不仅仅是单纯写写脚本运行就可以了,还需要考虑到如何使脚本运行效率提高,代码复用、参数化等问题。自动化测试模型分为四大类:线性模型,模块化驱动测试、数据驱动、关键词驱动。

 

 

线性模型

线性脚本中每个脚本都相互独立,且不会产生其他依赖与调用,其实就是简单模拟用户某个操作流程的脚本。

案例:在软件主页自动登录和退出操作

from selenium import webdriver

from time import sleep

 

driver=webdriver.Firefox()

driver.get("http://localhost")

 

#输入用户名

driver.find_element_by_name('username').clear()

driver.find_element_by_name('username').send_keys('51ttt')

 

#输入密码

driver.find_element_by_name('password').clear()

driver.find_element_by_name('password').send_keys('123456')

 

#点击登陆

driver.find_element_by_name('Submit').click()

 

sleep(3)

 

#退出

driver.find_element_by_link_text('退出').click()

sleep(2)

driver.switch_to_alert().accept()

 

sleep(3)

driver.quit()

 

 

模块化驱动测试

线性模型虽然每个用例都可以拿出来独立运行,但是用例之间重复代码很多,开发、维护成本高。其实把重复的操作代码封装为独立的公共模块,当用例执行时需要用到这部分,直接调用即可,这就是模块驱动的方式。比如登录系统、退出登录、截图函数等等。

from selenium import webdriver

from time import sleep

 

class Login():

    def user_login(self,driver):

        driver.find_element_by_name('username').clear()

        driver.find_element_by_name('username').send_keys('51ttt')

 

        driver.find_element_by_name('password').clear()

        driver.find_element_by_name('password').send_keys('123456')

 

        driver.find_element_by_name('Submit').click()

 

    def user_logout(self,driver):

        driver.find_element_by_link_text('退出').click()

        sleep(2)

        driver.switch_to_alert().accept()

 

if __name__=='__main__':

    driver = webdriver.Firefox()

    driver.get("http://localhost/")

    driver.implicitly_wait(10)

 

    Login().user_login(driver)

    Login().user_logout(driver)

调用登录模块

from LoginClass import *

 

driver = webdriver.Firefox()

driver.get("http://localhost/")

driver.implicitly_wait(10)

 

Login().user_login(driver)

Login().user_logout(driver)

数据驱动测试

模块驱动的模型虽然解决了脚本的重复问题,但是需要测试不同数据的用例时,模块驱动的方式就不很适合了。 数据驱动就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。 装载数据的方式可以是列表、字典或是外部文件(txt、csv、xml、excel),目的就是实现数据和脚本的分离。

from selenium import webdriver

from time import sleep

 

class Login():

    def user_login(self,driver,username,password):

        driver.find_element_by_name('username').clear()

        driver.find_element_by_name('username').send_keys(username)

 

        driver.find_element_by_name('password').clear()

        driver.find_element_by_name('password').send_keys(password)

 

        driver.find_element_by_name('Submit').click()

    def user_logout(self,driver):

        driver.find_element_by_link_text('退出').click()

        sleep(2)

        driver.switch_to_alert().accept()

数据驱动调用——实现多个账户登录

from LoginClass_Para import *

from  selenium import webdriver

from time import sleep

 

driver=webdriver.Firefox()

driver.get("http://localhost")

driver.implicitly_wait(10)

 

Login().user_login(driver,"51ttt",'123456')

sleep(3)

Login().user_logout(driver)

 

Login().user_login(driver,"51Pro",'123456')

sleep(5)

Login().user_logout(driver)

关键字驱动测试

通过关键字的改变引起测试结果的改变叫关键字驱动测试。 selenium IDE也是一种传统的关键字驱动的自动化工具,Robot Framework 是一个功能更强大的关键字驱动测试框架

猜你喜欢

转载自blog.csdn.net/juhua2012/article/details/89150354