自动化测试模型

概念

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

本地Web测试站点搭建:

- 安装步骤

  • 1、解压安装包;
  • 2、将安装包的“EmpireServer”目录复制到D盘根目录;(D:\EmpireServer目录名不可更改)
  • 3、双击“D:\EmpireServer\一键安装.bat”(vistawindows7以上则要鼠标右键以管理员身份运行)
  • 4、至此,运行环境及帝国CMS全部安装完毕;
  • 5、在浏览器打入:http://localhost/e/admin 后回车,进入帝国CMS后台登陆界面。
  • 前台地址:http://localhost
  • 后台地址:http://localhost/e/admin (登录用户名、密码与认证码均为admin)
  • 搭建完成之后注册一个测试账号 51zxw 密码:123456

线性模型

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

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

#/usr/bin python
#-*- coding:UTF-8 -*-
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get('http://localhost/')

driver.find_element_by_name('username').clear()
driver.find_element_by_name('username').send_keys('pretend_smile')
driver.find_element_by_name('password').clear()
driver.find_element_by_name('password').send_keys('fan123456')
driver.find_element_by_name('Submit').click()

sleep(5)

driver.find_element_by_link_text('退出').click()
driver.switch_to_alert() .accept()
sleep(5)

driver.quit()

 模块化驱动测试

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

 

  LoginClass文件内容:

#/usr/bin python
#-*- coding:UTF-8 -*-
from selenium import webdriver
from time import sleep

class Login():
    def user_login(driver):
        driver.find_element_by_name('username').clear()
        driver.find_element_by_name('username').send_keys('pretend_smile')
        driver.find_element_by_name('password').clear()
        driver.find_element_by_name('password').send_keys('fan123456')
        driver.find_element_by_name('Submit').click()
        sleep(5)

    def user_logout(driver):
        driver.find_element_by_link_text('退出').click()
        sleep(5)
        driver.switch_to_alert() .accept()

if __name__ == '__main__':
    driver = webdriver.Chrome()
    driver.get('http://localhost/')
    #隐式等待
    driver.implicitly_wait(4)

    Login.user_login(driver)
    Login.user_logout(driver)

    driver.quit()

 

调用登录模块:

#/usr/bin python
#-*- coding:UTF-8 -*-
from selenium import webdriver
from time import sleep
from LoginClass import *


driver = webdriver.Chrome()
driver.get('http://localhost/')
#隐式等待
driver.implicitly_wait(3)

Login.user_login(driver)
Login.user_logout(driver)

driver.quit()

 

 数据驱动

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

   

  LoginClass 调用模块

#/usr/bin python
#-*- coding:UTF-8 -*-
from selenium import webdriver
from time import sleep

class Login():
    def user_login(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()
        sleep(5)

    def user_logout(driver):
        driver.find_element_by_link_text('退出').click()
        sleep(5)
        driver.switch_to_alert() .accept()

if __name__ == '__main__':
    driver = webdriver.Chrome()
    driver.get('http://localhost/')
    #隐式等待
    driver.implicitly_wait(4)
   Login.user_login(driver,'pretend_smile','fan123456')
   Login.user_logout(driver)
   driver.quit()

  DriverClass调用模块

#/usr/bin python
#-*- coding:UTF-8 -*-
from selenium import webdriver
from time import sleep

class Driver():
    def Driver(url):
        driver = webdriver.Chrome()
        driver.get(url)
        sleep(3)
        return driver

  主函数

#/usr/bin python
#-*- coding:UTF-8 -*-
from selenium import webdriver
from LoginClass import *
from DriverClass import *

#driver = webdriver.Chrome()
#driver.get('http://localhost/')
driver = Driver.Driver('http://localhost/')

Login.user_login(driver,'pretend_smile','fan123456')
Login.user_logout(driver)

driver.quit()

 关键字驱动

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

  可参考Robot Framework章节

posted @ 2018-06-23 12:12  pretend_smile  阅读(169)  评论(0)    收藏  举报