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 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> web自动化测试-第十一讲:web自动化测试脚本优化--PO模式 -> 正文阅读

[开发测试]web自动化测试-第十一讲:web自动化测试脚本优化--PO模式

什么是PO模式

1、PO模型是:Page Object Model的简写,页面对象模型,是一种设计模式
2、作用:就是把测试测试逻辑和页面的业务流操作进行分离,即把页面封装成类,供测试脚本进行调用;分层机制,让不同层去做不同类型的事情,让代码结构清晰,增加复用性。

看懂这个图,也就明白PO模式是什么,作用

?你的测试用例中,需要在系统哪个页面操作哪个业务流,就调用哪个页面的业务流就可以了,我们如何把PO模式用到我们web自动化测试中?直接上代码:

PO的代码目录组织示例:

?conftest.py:

"""
时间:2021/8/5-22:05
文件:conftest.py.py
姓名:瓜牛强强
QQ:1689785398@qq.com
"""
import pytest

from selenium import webdriver


@pytest.fixture()
def driver():
    """打开浏览器和关闭浏览器"""
    # 地址
    url = "https://v4.ketangpai.com/User/login.html"
    driver = webdriver.Chrome()
    # 最大化,隐性等待
    driver.maximize_window()
    # 隐性等待
    driver.implicitly_wait(10)
    

    # 访问被测网址
    driver.get(url)
    print("以上步骤为前置条件")
    yield driver
    print("以下步骤为后置条件")
    # 关闭浏览器
    driver.quit()

test_login.py:

"""
时间:2021/8/5-22:12
文件:test_login.py
姓名:瓜牛强强
QQ:1689785398@qq.com
"""
"""
登录的测试用例
使用的是pytest 框架
"""
import pytest

from page.login_page import LoginPage

class TestLogin:

    def test_login_username_error(self, driver):
        """测试登录功能--第1条测试用例--用户名、密码错误:
        步骤:
        1、访问登录界面
        2、输入用户名和密码,回车
        3、断言: 预期结果和实际结果比对
        """
        # 测试数据统一管理
        username = '1111111111'
        password = '1234'
        expected = '密码有效长度是6到30个字符'

        # 调用登录页面的登录业务流
        LoginPage(driver).login(username,password)

        # 断言:在页面当中找到错误信息的元素,获取文本与实际结果对比。
        error_ele = driver.find_element('xpath', '//p[@class="error-tips"]')
        actual = error_ele.text
        assert actual == expected

    def test_login_password_None(self, driver):
        """测试登录功能--第2条测试用例--密码为空:
        步骤:
        1、访问登录界面
        2、输入用户名和密码,回车
        3、断言: 预期结果和实际结果比对
        """
        # 测试数据统一管理
        username = '1111111111'
        password = ' '
        expected = '密码不能为空'

        # 调用登录页面的登录业务流
        LoginPage(driver).login(username,password)

        # 断言:在页面当中找到错误信息的元素,获取文本与实际结果对比。
        error_ele = driver.find_element('xpath', '//p[@class="error-tips"]')
        actual = error_ele.text
        assert actual == expected

if __name__ == '__main__':
    pytest.main()

login_page.py:

"""
时间:2021/8/21-15:34
文件:login_page.py
姓名:瓜牛强强
QQ:1689785398@qq.com
"""
import time

from selenium.webdriver.common.keys import Keys

class LoginPage:

    def __init__(self, driver):
        self.driver = driver

    def login(self, username, password):
        """登录"""
        # 定位用户名元素,输入用户名
        username_el = self.driver.find_element('xpath', '//input[@name="account"]')
        username_el.send_keys(username)
        # 定位密码元素,输入密码
        # 直接回车提交
        password_el = self.driver.find_element('xpath', '//input[@name="pass"]')
        password_el.send_keys(password)
        # 回车提交
        password_el.send_keys(Keys.ENTER)
        time.sleep(5)

To be continue,点个关注,持续更新。。。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:48:14  更:2021-08-22 13:48:20 
 
开发: 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年5日历 -2024/5/19 10:20:48-

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