当前位置:网站首页>APP自动化测试-Appium进阶
APP自动化测试-Appium进阶
2022-06-23 03:55:00 【balahalalala】
App自动化测试(学习笔记三)——Appium进阶
Appium进阶
触屏操作
TouchActions官方地址
appium2.0+ 触屏操作方法:待补充
appium官网文档
模拟来电
self.driver.make_gsm_call(‘5551234567’, GsmCallActions.CALL)
模拟来短信
self.driver.send_sms(‘555-123-4567’, ‘Hey lol’)
模拟网络切换
self.driver.set_network_connection(1)
截图
self.driver.get_screenshot_as_file(‘./photos/img.png’)
录屏
self.driver.start_recording_screen()
…
self.driver.stop_recording_screen()
自动化关键数据记录
- 行为日志
使用 python 自带的 logging 模块
使用 pytest.ini 配置日志开关与格式
pytest.ini 文件配置日志级别,保存地址等内容。
注意:windows系统 需要把中文 注释去掉。
[pytest]
;日志开关 true false
log_cli = true
;日志级别
log_cli_level = info
;打印详细日志,相当于命令行加 -vs
addopts = --capture=no
;日志格式
log_cli_format = %(asctime)s [%(levelname)s] %(message)s (%(filename)s:%(lineno)s)
;日志时间格式
log_cli_date_format = %Y-%m-%d %H:%M:%S
;日志文件位置
log_file = ./log/test.log
;日志文件等级
log_file_level = info
;日志文件格式
log_file_format = %(asctime)s [%(levelname)s] %(message)s (%(filename)s:%(lineno)s)
;日志文件日期格式
log_file_date_format = %Y-%m-%d %H:%M:%S
import codecs
def ReadFile(filePath, encoding="utf-8"):
with codecs.open(filePath, "r", encoding) as f:
return f.read()
def WriteFile(filePath, u, encoding="gbk"):
with codecs.open(filePath, "w", encoding) as f:
f.write(u)
def UTF8_2_GBK(src, dst):
content = ReadFile(src, encoding="utf-8")
WriteFile(dst, content, encoding="gbk")
UTF8_2_GBK('pytest_utf8.ini', 'pytest.ini')
- 截图
| 方法名 | 描述 |
|---|---|
| get_screenshot_as_file(filename) | 保存图片为.png 格式,filename 图片路径 |
| save_screenshot(filename) | 保存图片为.png 格式,filename 图片路径 |
| get_screenshot_as_png() | 保存图片为二进制格式 |
| get_screenshot_as_base64() | 将图片保存为 base64 格式。通常用在 html 里添加截图 |
- 页面源码
通过获取页面源码,分析页面的 dom 结构
driver.page_source
打印当前页面为xml
print(self.driver.page_source)
自动化测试实战
思路:
- 梳理测试用例:梳理用例流程、前置后置
- 构造po模型:创建页面相关的类和方法
- 编写测试用例:根据业务逻辑编写、链式调用
- 填充具体实现:实现的时候BasePage进行封装
- 优化用例:封装样板代码、提取页面元素、添加起始页面的url。。
PO 模型类图,分为三层:
- 具体业务层
- 公共业务层
- 和业务无关的公共方法层

app 弹窗异常处理
运行过程中不定时弹框:广告、升级提示、短信、、、、弹框不是bug
try:
find
except:
处理异常逻辑
异常逻辑:黑名单机制,遍历黑名单,如果发现黑名单弹框,则点掉,继续执行find方法;如果达到最大查找次数,还是异常,则抛出NoSuchException错误信息。
装饰器
对原有函数的功能增强
不改变原有函数的逻辑
使代码更简洁、易维护
测试框架
打造测试框架的需求与价值
领域模型适配:封装业务实现,实现业务管理
提高效率:降低用例维护成本,提高执行效率
增强功能:解决已有框架不满足的情况
自动化框架应具备的功能
支持管理用例,运行用例
支持查找元素/定位元素,对元素/页面 进行各种操作(点击,滑动,输入等等)
支持生成测试报告
能够实现功能的复用,(比如登录,搜索等)
当页面有异常弹框的时候,可以进行有效的处理
当用例失败,需要添加失败时的日志,截图,等信息,放在测试报告中
多设备并发
支持平台化
…
自动化测试框架实现
| 功能 | 实现 |
|---|---|
| 管理用例,运行用例 | pytest |
| 查找元素/定位元素 | Appium |
| 测试报告 | Allure |
| 功能复用 | PO 实现 |
| 异常弹框 | 编写代码 |
| 失败时的日志,截图 | 编写代码 |
| 多设备并发 | selenium grid |
| 平台化 | VUE+FLASK/Django |
项目结构

为什么要封装框架?复用*平台化*
增强功能
异常处理(弹窗黑名单)
日志记录\运行日志记录\错误日志记录
报告生成:
异常日志
异常截图
测试用例步骤
测试描述
bug,issue 关联
用例分类(feature,story,step 等)
pip install allure-pytest
pytest test_xxx.py --alluredir=./result
allure serve ./result
- 参数化与数据驱动:
支持支持测试用例 / 步骤层级的参数化驱动配置
配置方式包括三个部分
参数定义(指定名字)
数据源指定(指定 yaml 文件 /或者其它格式文件)
数据源准备(无论是从线上环境 捞的数据,还是自己创建的测试数据)
减少冗余代码\集中管理测试数据\便于维护
- 总结
自动化测试框架应具备的功能
自动化测试框架优化(在 PO 的基础上,添加异常处理,日志,报告 ,截图,参数化与数据驱动等)逐步的将框架完善
边栏推荐
- I have been engaged in software testing for 5 years and have changed jobs for 3 times. I have understood the field of software testing
- 【微服务|Nacos】Nacos版本相关问题一览
- 618 how to break through the siege? Haier Zhijia: do a good job in digitalization of users
- Drag and drop frame
- Visual display of TEQC quality analysis results using teqcplot
- 【opencv450】 图像相减、二值化、阈值分割
- Event log keyword: eventlogtags logtags
- 代码片段管理器SnippetsLab
- 工作5-8年的外包测试员,平均年薪有多少?
- OSPF shunt test
猜你喜欢
随机推荐
Drama asking Huamen restaurant Weng
The propeller framework v2.3 releases the highly reusable operator library Phi! Restructure development paradigm to reduce cost and increase efficiency
【微服务|Nacos】Nacos实现多环境和多租户的数据隔离
(IntelliJ)插件一 Background Image Plus
Strong push, quick start to software testing
Servlet self study notes
Raspberry pie network remote access
入行软件测试5年,跳槽3次,我摸透了软件测试这一行
Drag and drop frame
[C language] keyword
MVC three-tier architecture
Implementation of slider view
Getting started with the shutter AppBar
Automatically add watermark to screenshot
Complete the primary school project in 3 days, and teach you to complete the weather broadcast system hand in hand!
【Leetcode】最长递增子序列问题及应用
百度飞桨“万有引力”2022首站落地苏州,全面启动中小企业赋能计划
Rtklib new version 2.4.3 B34 test comparison
Economic development is driven by new technology
A bug in rtklib2.4.3 B34 single point positioning









