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)

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 连接ssh显示access denied,设置PermitRootLogin yes后依然不行解决办法

    连接ssh显示access denied,设置PermitRootLogin yes后依然不行解决办法ssh连接Ubuntu之accessdenied解决方法是:修改/etc/ssh/ssh_config文件,#PermitRootLoginprohibit-password改为PermitRootLoginyes**然后!!!!!!!!!!**PasswordAuthenticationyes最后,设置root的密码。passwdroot。重启ssh(/etc/init.d/sshrestart)之后就可以了。…

  • Linux 命令学习之dpkg命令详解

    Linux 命令学习之dpkg命令详解dpkg是一个Debian的一个命令行工具,它可以用来安装、删除、构建和管理Debian的软件包。下面是它的一些命令解释:1)安装软件命令行:dpkg-i示例:dpkg-iavg71flm_r28-1_i386.deb2)安装一个目录下面所有的软件包命令行:dpkg-R示例:dpkg-R/usr/local/src3)释放软件包,但是不进行配置命令

  • word文档怎么打印成册子_零基础学word文档

    word文档怎么打印成册子_零基础学word文档Word2003是微软公司提供的一款文字处理软件,可以对文字进行排版和编辑、分段等各种处理,最终将编辑好的内容打印出来,是办公室一族中必备的办公软件之一。Word2003具有一个“书籍折页”的功能,能够在一页纸上打印两页的内容,打印后可以从中缝装订成折叠的小册子,更便于携带和阅读,具体怎么来设置呢?就让Word联盟为大家带来分享!动画演示:①打开“页面设置”对话框,切换到

  • gb50174-2017数据中心机房等级标准_计算机机房设计标准GB50174

    gb50174-2017数据中心机房等级标准_计算机机房设计标准GB501742.0.1数据中心datacenter为集中放置的电子信息设备提供运行环境的建筑场所,可以是一栋或几栋建筑物,也可以是一栋建筑物的一部分,包括主机房、辅助区、支持区和行政管理区等。2.0.2灾备数据中心businessrecoverydatacenter用于灾难发生时,接替生产系统运行,进行数据处理和支持关键业务功能继续运作的场所,包括限制区、普通区和专用区。2.0.3主机房c…

  • 使用php实现单点登录实例详解

    使用php实现单点登录实例详解

    2021年10月27日

发表回复

您的电子邮箱地址不会被公开。

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