selenium实战记录-从登陆-首页-进入应用页面测试用例

项目结构

样式:

projectName #项目名称

├── base #封装PO基类

├── page #封装PO页面对象

├── scripts #定义测试用例脚本

├── data #存放测试数据

├── report #存放生成的测试报告

├── log #存放日志文件

├── img #存放截图

├── config.py#定义项目的配置信息

├── utils.py #定义工具类

├──pytest.ini #pytest配置文件

├── utils.py #定义工具类

└──conftest.py #不用写任何代码,放在项目的根目录,所有测试文件都能读取它

自动化测试用例编写遵循原则

  1. 核心业务,重复执行的业务;
  2. 正向用例;
  3. 尽量减少用例脚本之间的依赖
  4. 不是所有用例都需要自动化;

page类

1、一个也没一个page文件,如图:

2、登陆后home页面封装代码

python 复制代码
#后台home页面
from selenium.webdriver.common.by import By
from base.base import BasePage
from base.base import BaseHandle

#定义对象库层
class HomePage(BasePage):
    def __init__(self):
        super().__init__() #继承基类的初始化方法,自带驱动
        self.username=By.XPATH,"//*[@class='user-name']/span"
        self.digital=By.XPATH,"//*[@src='https://yxf-bucket-01.oss-cn-beijing.aliyuncs.com/ApplicationIcons/1641972601070.png']"
    #获取元素定位使用基础类中方法,代码更简洁
    def find_username(self):
        return self.get_element(self.username)
    def find_digital(self):
        return self.get_element(self.digital)

#定义操作层
class HomeHandle(BaseHandle):
    def __init__(self):
        self.home_page=HomePage()
    #获取登陆者姓名,通过text获取
    def get_username(self):
        return self.home_page.find_username().text
    #点击进入客户管理
    def click_digital(self):
        self.home_page.find_digital().click()

#定义业务层
class HomeProxy:
    #实例化操作层类
    def __init__(self):
        self.home_handle=HomeHandle()
    #获取用户姓名,需要返回用户名字所以使用return
    def get_username_msg(self):
        return self.home_handle.get_username()
    #点击登陆跳转到home页面
    def go_digital_page(self):
        self.home_handle.click_digital()

测试脚本

1、测试用例:先登陆-进入首页-点击客户管理应用;

2、代码如下:

python 复制代码
import pytest
from page.page_home import HomeProxy
from  page.page_login import LoginProxy
from  page.page_digital import DigitalProxy
import logging
from utils import UtilsDriver,get_msg

#定义测试类,
class TestLogin:
    #初始化。类级别的
    def setup_class(self):
    			#实例化
        self.login_proxy=LoginProxy()
        self.home_proxy=HomeProxy()
        self.dig_proxy=DigitalProxy()
    #结束销毁,类级别,统一销毁
    def teardown_class(self):
        UtilsDriver.quit_driver()  #调用工具类中的关闭webdriver对象
    #success
    def test01_login(self):
        # 调用登陆业务进入首页,参数有账号密码
        self.login_proxy.go_home_page("ydhl","ganfeimei","ydhl123456")
        username = self.home_proxy.get_username_msg() #获取登陆者姓名
        #断言,通过登陆后页面获取用户名来断言
        assert "甘飞梅原点演示" == username
        logging.info("登陆者姓名:{}".format(username))

    def test02_home(self):
        #点击客户管理应用进入
        self.home_proxy.go_digital_page()
        digname=self.dig_proxy.get_digname_msg()
        #同上通过进入应用后获取应用名来断言
        assert "营销服务平台" == digname
         logging.info("应用名称:{}".format(digname))

测试结果

1、html格式测试报告。

相关推荐
Da Da 泓12 小时前
五子棋 Web 端测试用例报告
前端·网络·websocket·网络协议·测试用例·项目
梧桐16817 小时前
14天、31个缺陷、28个测试脚本—用 Claude Code 完成第三方软件测试
人工智能·测试工具
会开车的鸟哥1 天前
自动创建测试用例与组件测试向导
测试用例·simuinktest
mewowaBc1 天前
postman使用细则
测试工具·postman·偏差
光影6271 天前
Unittest单元测试基础速记
测试工具·单元测试·json·测试覆盖率
螺丝钉tina2 天前
[Playwright][08] Upload 模块自动化:如何设计真实业务测试用例?
运维·自动化·测试用例
xie881018022 天前
正则里的点号不匹配换行:多行模式的开关
运维·服务器·测试工具
TomEval2 天前
【测AI】第22篇:Agent 系统测试方法 — AI 学会“动手“了
人工智能·python·prompt·aigc·测试用例
车软学堂2 天前
CANoe自动化:跑起第一个测试用例
运维·车载系统·自动化·汽车·测试用例
2601_967987373 天前
Python在自动化测试中有哪些应用?
python自动化测试·selenium·appium·pytest·性能测试