PO模式之无模式

PO模式之无模式目标1.深入理解方法封装的思想2.能够使用方法封装的思想对代码进行优化3.深入理解PO模式的思想4.熟练掌握PO模式的分层思想PO模式学习思路采用版本迭代的方式来学习,便于对不同版本的优缺点进行对比和理解。V1:不使用任何设计模式和单元测试框架V2:使用UnitTest管理用例V3:使用方法封装的思想,对代码进行优化…

大家好,又见面了,我是你们的朋友全栈君。

目标

1. 深入理解方法封装的思想

2. 能够使用方法封装的思想对代码进行优化

3. 深入理解PO模式的思想

4. 熟练掌握PO模式的分层思想

PO模式学习思路

采用版本迭代的方式来学习,便于对不同版本的优缺点进行对比和理解。

V1:不使用任何设计模式和单元测试框架

V2: 使 用 UnitTest 管 理 用 例             V3:使用方法封装的思想,对代码进行优化

V4:采用PO模式的分层思想对代码进行拆分V5:对PO分层之后的代码继续优化

V6:PO模式深入封装,把共同操作提取封装到父类中,子类直接调用父类的方法

无模式

目标

1. 熟悉web自动化测试代码编写的基本流程

掌握如何使用UnitTest管理测试脚本

1. 案例说明

对TPshop项目的登录模块进行自动化测试。

提示:登录模块包含了很多测试用例,比如:账号不存在、密码错误、验证码错误、登录成功等等。

为了节省时间我们只选取几个有代表性的用例来演示。

1.1 选择的测试用例

账号不存在

1. 点击首页的‘登录’链接,进入登录页面

2. 输入一个不存在的用户名

3. 输入密码

4. 输入验证码

5. 点击登录按钮

6. 获取错误提示信息密码错误

1. 点击首页的‘登录’链接,进入登录页面

2. 输入用户名

3. 输入一个错误的密码

4. 输入验证码

5. 点击登录按钮

6. 获取错误提示信息

2. V1版本

不使用任何设计模式和单元测试框架。

每个文件里编写一个用例,完全的面向过程的编程方式。

2.1 存在的问题

 

一条测试用例对应一个文件,用例较多时不方便管理维护代码高度冗余

 

2.2 示例代码

登录功能账号不存在

from  selenium  import  webdriver
 
# 创建浏览器驱动对象,并完成初始化操作driver  =  webdriver.Firefox() driver.maximize_window() driver.implicitly_wait(10) driver.get("http://localhost")
 
"""
登录功能-账号不存在
"""
 
# 点击首页的‘登录’链接,进入登录页面
driver.find_element_by_link_text("登录").click()
 
# 输入用户名
driver.find_element_by_id("username").send_keys("13099999999")
 
# 输入密码
driver.find_element_by_id("password").send_keys("123456")
 
# 输入验证码
driver.find_element_by_id("verify_code").send_keys("8888")
 
# 点击‘登录’按钮
driver.find_element_by_name("sbtbutton").click()
 
# 获取提示信息
msg  =  driver.find_element_by_class_name("layui-layer-content").text print("msg=",  msg)
 
# 关闭驱动对象
driver.quit()

登录功能密码错误

from  selenium  import  webdriver
# 创建浏览器驱动对象,并完成初始化操作
driver  =  webdriver.Firefox() driver.maximize_window() driver.implicitly_wait(10) driver.get("http://localhost")
 
"""
登录功能-密码错误
"""
 
# 点击首页的‘登录’链接,进入登录页面
driver.find_element_by_link_text("登录").click()
 
# 输入用户名
driver.find_element_by_id("username").send_keys("13012345678")
 
# 输入密码
driver.find_element_by_id("password").send_keys("error")
 
# 输入验证码
driver.find_element_by_id("verify_code").send_keys("8888")
 
# 点击‘登录’按钮
driver.find_element_by_name("sbtbutton").click()
 
# 获取提示信息
msg  =  driver.find_element_by_class_name("layui-layer-content").text print("msg=",  msg)
 
# 关闭驱动对象
driver.quit()

2. V2版本

使用UnitTest管理用例,并断言用例的执行结果

2.1 引入UnitTest的好处

方便组织、管理多个测试用例提供了丰富的断言方法

方便生成测试报告减少了代码冗余

 

2.2 存在的问题

 

代码冗余

3.3示例代码

import  unittest
from  selenium  import  webdriver
 
class  TestLogin(unittest.TestCase): """
对登录模块的功能进行测试
"""
 
@classmethod
def  setUpClass(cls):
cls.driver  =  webdriver.Firefox() cls.driver.maximize_window() cls.driver.implicitly_wait(10) cls.driver.get("http://localhost")
 
@classmethod
def  tearDownClass(cls): cls.driver.quit()
 
def  setUp(self):
# 打开首页
self.driver.get("http://localhost")
 
# 点击首页的‘登录’链接,进入登录页面
self.driver.find_element_by_link_text("登录").click()
 
# 账号不存在
def  test_login_username_is_error(self):
# 输入用户名
self.driver.find_element_by_id("username").send_keys("13099999999")
 
# 输入密码
self.driver.find_element_by_id("password").send_keys("123456")
 
# 输入验证码
self.driver.find_element_by_id("verify_code").send_keys("8888")
 
# 点 击 ‘ 登 录 ’ self.driver.find_element_by_name("sbtbutton").click()
 
# 断言提示信息
msg  =  self.driver.find_element_by_class_name("layui-layer-content").text print("msg=",  msg)
self.assertIn("账号不存在",  msg)
 
# 密码错误
def  test_login_password_is_error(self):
# 输入用户名
self.driver.find_element_by_id("username").send_keys("13012345678")
 
# 输入密码
self.driver.find_element_by_id("password").send_keys("error")
 
# 输入验证码
self.driver.find_element_by_id("verify_code").send_keys("8888")
 
# 点 击 ‘ 登 录 ’ self.driver.find_element_by_name("sbtbutton").click()
 
# 断言提示信息
msg  =  self.driver.find_element_by_class_name("layui-layer-content").text print("msg=",  msg)
self.assertIn("密码错误",  msg)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138803.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Boltzmann机详解

    Boltzmann机详解基于热力学的随机型神经网络–Boltzmann机1.模拟退火算法我们知道,Hopfield神经网络拥有联想记忆的能力,这也是对生物神经网络的一种模拟。但是,Hopfield神经网络也和BP神经网络一样,有一个致命的缺陷:只能找到局部最优解,而无法沿着梯度上升的方向在全局的角度寻求全局最优解。为了解决这个问题,1983年,Kirkpatrick等提出了模拟退火算法(SA)能有效的解决局部最优…

    2022年7月12日
    16
  • 乱码问题分析

    乱码问题分析字符乱码的事,估计大家都遇到过,很烦,什么utf-8、GBK、GB2312转来转去,不知道什么时候才能转正常。我们做个试验,如果你是windows系统,打开记事本,新建一个文件,输入”联通”两个字之后,保存,关闭,然后再次打开,出现了什么现象?乱码!那你赶紧去找IT吧,你中招了!开玩笑的,这是著名的“windows联通之谜事件”。继续往下看,后面会有谜底的解释。那么我们就讨论下字符编码哪些事吧,首

    2022年5月27日
    64
  • 为什么国内很少人用树莓派(树莓派怎么玩)

    1.网站服务器在树莓派上搭建了一个博客网站,树莓派就放在家里,常年开机,使用内网穿透技术使得任何地方都可以访问我的博客,节省了服务器费用。虽然树莓派的性能比较差,但是当一个基本的服务器也足够了。树莓派安装lnmp套件搭建个人博客网站服务器|科技爱好者博客​www.lxx1.com2.做了一个广告屏蔽器用树莓派搭建了一个DNS服务器,主要用来屏蔽广告,效果非常不错,家里所有的上网设备都没有广…

    2022年4月12日
    599
  • 03-iframe属性src的使用

    src如果写成jsp页面,将会访问jsp页面,如果写成某个Action,会在访问该页面的时候自动的调用这个Action。  管理中心 indexAction_visitMenus”width=

    2022年4月7日
    37
  • c和Java的区别[通俗易懂]

    c和Java的区别[通俗易懂] 转 c和Java的区别 2017年12月24日20:45:32 lzr_jead 阅读数:166 Java和C语言的区别在哪里?设…

    2022年7月7日
    23
  • 一分钟学会Python中pip的安装与使用

    一分钟学会Python中pip的安装与使用文章目录一、简单介绍二、下载安装三、最常用命令1、显示版本和路径2、获取帮助3、升级pip4、安装包5、升级包6、卸载包7、搜索包8、显示安装包信息9、列出已安装的包10、查看指定包的详细信息一、简单介绍pip是Python包管理工具,该工具提供了对Python包的查找、下载、安装和卸载的功能,现在大家用到的所有包不是自带的就是通过pip安装的。Python2.7.9+或Python3.4+以上版本都自带pip工具。给出pip官网链接:pip官网。二、下载安装可以通过命令

    2022年4月30日
    87

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号