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格式测试报告。

相关推荐
姚青&6 小时前
Allure2 报告中添加用例分类
测试用例
测试老哥6 小时前
Postman获取token并设置token依赖步骤
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
我的xiaodoujiao8 小时前
Django 基础知识详细图文教程 4-Django 视图定义与使用
开发语言·数据库·后端·测试工具·django·sqlite
姚青&1 天前
Allure2 报告中添加用例链接
测试用例
A000—ic测试座(陈佳鑫)1 天前
国内国产替代的DC-DC芯片测试座企业整套解决方案
测试用例
JZMSYYQ1 天前
电输运性质测试系统主要测试哪些方面
测试工具·材料测试·电性能·电性能测试·电输运测试·测试设备
中国软件测试质量协会1 天前
国产UI自动化测试工具的“技术代际“演进与自主可控之路
测试工具·ui·自动化
zzzzzzzz'2 天前
浅谈自动化测试2——selenium库中的常用函数
selenium·测试工具·文件上传·导航栏·弹窗·定位元素·查找元素
蒲公英内测分发2 天前
AI 玩具 App 每周更新,怎么用 CI/CD 自动上传测试包又避免误发?
人工智能·测试工具·智能硬件·web app