博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第五章 自动化测试模型
阅读量:4222 次
发布时间:2019-05-26

本文共 3655 字,大约阅读时间需要 12 分钟。

5-1 自动化测试模型概述

概念

自动化测试模型可以看作自动化测试框架与工具设计的思想。自动化测试不仅仅是单纯写写

脚本运行就可以了。还需要考虑如何使脚本运行效率提高,代码复用、参数化等问题。

自动化测试模型分为四大类:线性模型,模块化驱动测试、数据驱动、关键词驱动。

本地Web测试站点搭建

工具:帝国CMS

下载地址:http://www.phome.net/download/

安装步骤

1、解压安装包;

2、将安装包的"EmpireServer"目录复制到D盘根目录:(D:\EmpireServer目录名不可更改)

3、双击"D:\EmpireServer\一键安装.bat":(用vista或windows7以上则要鼠标右键以管理员身份运行)

4、至此,运行环境及帝国CMS全部安装完毕;

5、在浏览器打入:http://localhost/e/admin后回车,进入帝国CMS后台登陆界面。

6、前台地址:http://localhost

7、后台地址:http://localhost/e/admin(登录用户名、密码与认证码均为admin)

搭建完成后注册一个测试账号,test 密码:123456

5-2  线性模型

线性脚本中每个脚本都相互独立,且不会产生其他依赖与调用,其实就是简单模拟用户某个
操作流程的脚本。
案例:在帝国软件主页自动登录和退出

 
from selenium import webdriverfrom time import sleepdriver=webdriver.Firefox()driver.get("http://localhost")#输入用户名driver.find_element_by_name('username').clear()driver.find_element_by_name('username').send_keys('test')#输入密码driver.find_element_by_name('password').cleardriver.find_element_by_name('password').send_keys('123456')sleep(2)#登录driver.find_element_by_name('Submit').click()sleep(5)#退出driver.find_element_by_link_text('退出').click()sleep(2)driver.switch_to_alert().accept()sleep(2)driver.quit()

5-3  5-4 模块化驱动测试

线性模型虽然每个用例都可以拿出来独立运行,但是用例之间重复代码很多,开发、维护

成本高,其实把重复的操作代码封装为独立的公共模块,当用例执行时需要用到这部分,

直接调用即可,这就是模块驱动的方式。比如登录系统、退出登录、截图函数等等。

LoginClass.py

from selenium import webdriverfrom time import sleepclass Login():    def user_login(self,driver):        # 输入用户名        driver.find_element_by_name('username').clear()        driver.find_element_by_name('username').send_keys('test')        # 输入密码        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  *from selenium import webdriverfrom time import sleepdriver = webdriver.Firefox()driver.get("http://localhost")driver.implicitly_wait(10)Login().user_login(driver)Login().user_logout(driver)

5-5  5-6 数据驱动测试

模块驱动的模型虽然解决了脚本的重复问题,但是需要测试不同数据的用例时,模块驱动

的方式就不很适合了。数据驱动就是数据的改变从而驱动自动化测试的执行,最终引起测

试结果的改变。装载数据的方式可以是列表、字典或是外部文件 (txt、csv、xml.excel),

目的就是实现数据和脚本的分离。

from selenium import webdriverfrom time import sleepclass 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()if __name__=='__main__':        driver =webdriver.Firefox()        driver.get("http://localhost")        driver.implicitly_wait(10)        Login().user_login(driver,'test','123456')        Login().user_logout(driver)

数据驱动调用--实现多个帐户登录

from LoginClass import  *from selenium import webdriverfrom time import sleepdriver = webdriver.Firefox()driver.get("http://localhost")driver.implicitly_wait(10)Login().user_login(driver, 'test', '123456')sleep(3)Login().user_logout(driver)Login().user_login(driver, 'test123', '123456')sleep(3)Login().user_logout(driver)

5-7 关键字驱动测试

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

你可能感兴趣的文章
云创大数据的2018年!
查看>>
全国高校(高职)大数据师资培训班圆满落幕,200多名老师抢先“尝鲜”!
查看>>
【回顾】云创大数据教育事业部成立
查看>>
云创大数据与江苏城市职业学院共建实习实训就业基地!
查看>>
12月,云创大数据发生了哪些大事?
查看>>
贵州电子商务职业技术学院实验中心主任李崑一行到访
查看>>
善行天下,大爱无疆 ——云创再次获赠爱心锦旗!
查看>>
热烈祝贺刘鹏教授膺选第45届世界技能大赛云计算赛事中国赛区裁判长!
查看>>
图解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的区别
查看>>
QNX简介
查看>>
MQTT协议基本介绍
查看>>
进程和线程是操作系统基本概念,了解一下
查看>>
SSL与TLS的区别以及介绍
查看>>
HTTPS、TLS、SSL、HTTP区别和关系
查看>>
Kafka 入门三问
查看>>
c/c++ 内存泄漏检测,开源工具valgrind使用整理
查看>>
h264 sps pps详解
查看>>
AAC的ADTS头信息介绍
查看>>
Coroutine,你究竟干了什么?
查看>>
代码宏的一点小知识
查看>>