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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 女生会java找什么工作吗_还在说女生不适合学java? 其实女生学java更有优势, 而且更容易找到工作!…

    女生会java找什么工作吗_还在说女生不适合学java? 其实女生学java更有优势, 而且更容易找到工作!…女生适合学java吗?女生做IT怎么样首先要表明我的观点,编程是不分男女,什么女生不适合学编程的说法,从客观上来说,我觉得这是一种偏见。不少人潜意识里认为女生不适合从事IT岗位的工作,因为他们觉得这些岗位对逻辑性的要求很好,而且要具备一定的操作水平,而女生在这方面比较薄弱。实际上,女生从Java的工作,很多时候能做得比男生更好。为什么说女生比男生更能学好java呢?1、女生往往比男生更细心,我认为…

    2022年7月8日
    23
  • Stm32的GPIO驱动继电器[通俗易懂]

    Stm32的GPIO驱动继电器[通俗易懂]三极管三极管S8050-D:直插的字体面向自己从左到右依次是发射极E,基极B,集电极C类型:NPN集电极耗散功率Pc:0.625W(贴片:0.3W)集电极电流Ic:0.5A集电极-基极电压Vcbo:40V集电极-发射极电压Vceo:25V集电极-发射极饱和电压Vce(sat):0.6V特征频率f:最小150MHz按三极管后缀号分为BCD档贴片为LH档放大倍数:B85-160C120-200D160-300L100-200H200-350上图中,左边的GPIO

    2022年6月24日
    119
  • header发送Cookie

    header发送Cookie

    2021年10月26日
    44
  • Dedecms列表页标签list/pagelist使用方法及pagelist的样式

    Dedecms列表页标签list/pagelist使用方法及pagelist的样式

    2021年9月22日
    51
  • vs2019中scanf返回值被忽略_vs2017scanf

    vs2019中scanf返回值被忽略_vs2017scanf一、问题再现如下是笔者在学习数据结构中的二叉树时遇到的问题:报错警告:返回值被忽略:”scanf”。二、问题分析百度一下之后大致原因是:scanf()函数在读取时不检查边界,所以可能会造成内存泄漏。有一定的安全隐患。微软公司觉得其不安全,所以在VS编译器中提供了scanf_s()函数,这是VS编译器特有的函数。强制用户提升安全性,如果想要在VS中使用scanf()函数,则可以通过一下4中方法解决。三、解决方案1、把scanf改成:scanf_s把所有的scanf()改

    2025年6月8日
    3
  • pycharm2021年激活码【注册码】

    pycharm2021年激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    62

发表回复

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

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