【App自动化测试】(十三)以雪球财经app为例的移动端自动化测试练习

2024-02-27 22:40

本文主要是介绍【App自动化测试】(十三)以雪球财经app为例的移动端自动化测试练习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1. 产品分析
  • 2. 实战练习思路
  • 3. 用例设计
  • 4.构造PO模型,编写测试用例
    • 4.1 模型框架
    • 4.2 目录结构
    • 4.3 搭建框架
  • 5. 优化用例
    • 5.1 优化内容
    • 5.2 代码
  • 6. 优化测试框架
    • 6.1 优化内容
    • 6.2 代码
      • 6.2.1 目录结构
      • 6.2.2 实现代码
    • 6.3 运行结果展示
      • 6.3.1 测试结果
      • 6.3.2 异常截图
      • 6.3.3 日志记录
      • 6.3.4 allure报告


前言
本文为在霍格沃兹测试开发学社中学习到的一些技术写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~ 😘

1. 产品分析

  • 被测应用:雪球 App

  • 雪球 App 介绍

    • 雪球 app 是一款免费版,非常实用的股票平台,提供热点资讯内容和实时行情,提供了证券交流交易,公募、理财服务
    • 雪球 app 功能包括搜索股票,查看行情,交易,浏览热门文章,发帖,登录,注册,等功能

2. 实战练习思路

在这里插入图片描述

3. 用例设计

搜索场景

  • 打开【雪球】应用首页
  • 点击搜索框,进入搜索页面
  • 向搜索输入框中输入【alibaba】
  • 点击搜索结果中的【阿里巴巴】
  • 切换到 tab 的【股票】
  • 找到 股票【阿里巴巴】的股票价格 price
  • 判断 price 在 110 上下 10%浮动

4.构造PO模型,编写测试用例

4.1 模型框架

PO模型分为三层:

  • 具体业务层
  • 公共业务层
  • 和业务无关的公共方法层

在这里插入图片描述

4.2 目录结构

base/ base_page.py  #基类xueqiu_app.py # app启动相关
page/main_page.py  #PO-主页search_page.py #PO-搜索页search_result_page.py #PO-搜索结果也cases/test_xueqiu.py

4.3 搭建框架

先把框架搭好,写好测试用例,填充业务逻辑,保证用例可以正常跑通。

  1. base
  • base_page.py(实现暂时为空)

  • xueqiu_app.py

from appium import webdriver
from appiumpo.page.main_page import MainPageclass XueQiuApp:""" 放置雪球APP相关的操作:start 启动;restart 重启;stop 停止"""def start(self):desired_caps = {}desired_caps['platformName'] = 'Android'desired_caps['platformVersion'] = '6.0'desired_caps['deviceName'] = '127.0.0.1:7555'desired_caps['appPackage'] = 'com.xueqiu.android'desired_caps['appActivity'] = '.view.WelcomeActivityAlias'desired_caps['noReset'] = 'true'self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)self.driver.implicitly_wait(10)return selfdef restart(self):passdef stop(self):passdef goto_main(self):#完成切换到到PO的功能return MainPage(self.driver)
  1. page
  • main_page.py
from appium.webdriver.common.appiumby import AppiumBy
from appium.webdriver.webdriver import WebDriver
from appiumpo.page.search_page import SearchPageclass MainPage:def __init__(self,driver:WebDriver):self.driver=driverdef click_search(self):#点击搜索框self.driver.find_element(AppiumBy.ID,"com.xueqiu.android:id/tv_search").click()return SearchPage(self.driver)
  • search_page.py
from appium.webdriver.common.appiumby import AppiumBy
from appium.webdriver.webdriver import WebDriver
from appiumpo.page.search_result_page import SearchResultPageclass SearchPage:def __init__(self, driver:WebDriver):self.driver = driverdef input_searchcontent(self,searchkeys):# 输入搜索内容self.driver.find_element(AppiumBy.ID,"com.xueqiu.android:id/search_input_text").send_keys(searchkeys)return selfdef click_searchresult(self,text):self.driver.find_element(AppiumBy.XPATH, f"//*[@text='{text}']").click()return SearchResultPage(self.driver)
  • search_result_page.py
from appium.webdriver.common.appiumby import AppiumBy
from appium.webdriver.webdriver import WebDriverclass SearchResultPage:def __init__(self, driver: WebDriver):self.driver = driverdef goto_stock_tab(self):#点击股票self.driver.find_element(AppiumBy.XPATH,"//*[@text='股票']").click()return selfdef get_price(self):#找到对应股票的价格,返回股票价格current_price=self.driver.find_element(AppiumBy.XPATH,"//*[@text='BABA']/../../..//*[@resource-id='com.xueqiu.android:id/current_price']").textreturn float(current_price)
  1. cases
  • test_xueqiu.py
#使用harmcrest 要导入全部内容,要不然有一些函数会报错
from hamcrest import *
from appiumpo.base.xueqiu_app import XueQiuAppclass TestXueQiu:def setup(self):

这篇关于【App自动化测试】(十三)以雪球财经app为例的移动端自动化测试练习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/753790

相关文章

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

Jenkins中自动化部署Spring Boot项目的全过程

《Jenkins中自动化部署SpringBoot项目的全过程》:本文主要介绍如何使用Jenkins从Git仓库拉取SpringBoot项目并进行自动化部署,通过配置Jenkins任务,实现项目的... 目录准备工作启动 Jenkins配置 Jenkins创建及配置任务源码管理构建触发器构建构建后操作构建任务

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

RabbitMQ练习(AMQP 0-9-1 Overview)

1、What is AMQP 0-9-1 AMQP 0-9-1(高级消息队列协议)是一种网络协议,它允许遵从该协议的客户端(Publisher或者Consumer)应用程序与遵从该协议的消息中间件代理(Broker,如RabbitMQ)进行通信。 AMQP 0-9-1模型的核心概念包括消息发布者(producers/publisher)、消息(messages)、交换机(exchanges)、