IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 6.po模式 -> 正文阅读

[开发测试]6.po模式

po:p:page(页面),o:object(对象)
po模式学习思路

根据版本迭代的方式进行学习
V1:不使用任何设计模式和单元测试框架
V2:使用UnitTest管理用例
V3:使用方法封装的思想,对代码进行优化
V6:po模式深入封装,把共同操作提取封装
V6:po模式深入封装,把共同操作提取封装

base(基类):page页面中一些公共的方法
		Base类:#初始化方法
				#查找元素方法
				#点击元素方法
				#获取文本方法
				#截图方法
	注意:以上方法封装时,解包只需一次,在查找元素里解包
		driver为虚拟的,谁调用base时,谁传入,无需关注他从那来
		loc:真正使用loc的方法,只有查找元素时使用
page(页面对象):一个页面封装成一个对象(继承base)
	实现:1.模块名:page+实际操作模块名称  如:page_login.py
		2.业务对象名:以大驼峰的方式把模块名抄起来,有下划线去掉下划线
		3.方法:涉及的元素将每一个元素操作单独封装成一个方法
		4.组装:根据需求组装以上上述步骤
scripts/cases:业务层,导包调用page页面
	实现:1.模块:test+实际操作模块名称  如:test_login.py
			2.业务名称:以大驼峰的方式把模块名抄起来,有下划线去掉下划线
			3.方法:1)初始化方法:setup:#实例化页面对象
										#前置操作
						2) 结束方法:tearDown :关闭驱动
						3)测试方法:根据要操作的业务实现

base:

from selenium.webdriver.support.wait import WebDriverWait
class Base():
    #初始化
    def __init__(self,driver):
        self.driver=driver
        pass
    #查找元素方法(提供:点击,输入,获取文本)使用
    #loc:元组,*loc:解包
    def base_find_element(self,loc,timeout=30,poll=0.5):
        #显示等待
        return WebDriverWait(self.driver,timeout=timeout,poll_frequency=poll).until(lambda x:x.find_element(*loc))


    #点击方法
    def base_click_element(self,loc):
        self.base_find_element(loc).click()
        pass


    #输入方法
    def base_input(self,loc,value):
        el=self.base_find_element(loc)
        el.clear()
        el.send_keys(value)
        pass


    #获取文本  一定要返回元素
    def base_get_test(self,loc):
        return self.base_find_element(loc).text
        pass


    #截图方法
    def base_get_screen(self):
        self.driver.get_screenshot_as_file("../image/fail.png")
        pass

page
1.init

from selenium.webdriver.common.by import By
'''以下为登陆页面元素配置信息'''

#登录链接
login_link=By.PARTIAL_LINK_TEXT,"登录"
#用户名
username=By.NAME,"username"
password=By.NAME,"password"
button=By.NAME,"click"
text=By.NAME,"text"

2.page_login

mport day05_po.v4.page
from day05_po.v4.base.base import Base
from day05_po.v4.base.base import Base
from day05_po.v4 import page

class PageLogin(Base):
    #点击登陆链接
    def page_login(self):
        self.base_click_element(page.login.link)

    #输入用户名
    def page_input_username(self,username):
        self.base_input(page.username,username)

    #输入密码
    def page_input_password(self,password):
        self.base_input(page.password, password)

    #点击确定按钮
    def page_click_login_button(self):
        self.base_click_element(page.button)
        pass
    #获取提示信息
    def page_get_text(self):
        return self.base_get_test(page.text)



    #点击提示信息框确定
    def page_click_text_button(self):

        pass
    #截图
    def page_get_screen(self):
        pass

    #组合业务方法
    def page_login(self,username,password):
        self.page_login()
        self.page_input_username(username)
        self.page_input_password(password)
        self.page_click_login_button()
        pass


script

#导包
import unittest

from  parameterized import parameterized

from day05_po.v4.page.page_login import PageLogin

def get_data():
    return [("11111","111","用户名不存在"),("admin","1","密码错误")]
#新建测试类并测试
class TestLogin(unittest.TestCase):
    #setup方法
    def  setUp(self):
        #实例化 获取页面对象  PageLogin
        self.login=PageLogin()
        #点击登录链接
        self.login.base_click_element()


    #teardown方法
    def tearDown(self):
        #关闭驱动对象
        self.login.driver.quit()

        pass

    #登陆测试方法
    @parameterized.expand(get_data())
    def test_login(self,username,password,text,expect_result):
        #调用登录方法
        self.login.page_login(username,password,text)
        #获取登陆提示信息
        msg=self.login.base_get_test()
        try:
            #断言
            self.assertEqual(msg,expect_result)

            #截图
            self.login.page_get_screen()
        except AssertionError:
            pass
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 14:29:45  更:2021-07-22 14:32:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 20:32:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码