Python+Appium+Pytest+Allure实战APP自动化测试

pytest只是单独的一个单元测试框架,要完成app测试自动化需要把pytest和appium进行整合,同时利用allure完成测试报告的产出。

编写常规的线性脚本具体的步骤如下:
1、设计待测试APP的自动化测试用例
2、新建app测试项目
3、配置conftest.py文件等
4、编写整体app测试用例运行文件
5、把设计好的自动化测试用例转化成脚本备注:
为了保证脚本的稳定性,又把pytest常用功能应用,以下示例采用android计算器为示例讲解。

2023年Python+App自动化测试实战教程,看这套视频轻松学会app自动化测试!_哔哩哔哩_bilibili2023年Python+App自动化测试实战教程,看这套视频轻松学会app自动化测试!共计3条视频,包括:app自动化训练营基础篇day01、app自动化训练营升华篇day02、app自动化训练营框架封装篇等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1g84y1k7zH/?spm_id_from=333.337.search-card.all.click

Gitee上完整代码:
https://gitee.com/YouJeffrey/AUTO_TEST_APP

前置条件:下载第三方库

1、下载 appium-python-client

2、下载pytest

3、下载 allure-pytest

一、设计待测试APP的自动化测试用例

二、新建APP测试项目

 

三、配置文件信息

1、先配置外层conftest.py文件

import pytest# 配置app的各种连接信息
@pytest.fixture(scope='session')
def android_setting():des = {'automationName': 'appium','platformName': 'Android','platformVersion': '6.0.1',  # 填写android虚拟机/真机的系统版本号'deviceName': 'MuMu',  # 填写安卓虚拟机/真机的设备名称'appPackage': 'com.sky.jisuanji',  # 填写被测app包名'appActivity': '.JisuanjizixieActivity',  # 填写被测app的入口'udid': '127.0.0.1:7555',  # 填写通过命令行 adb devices 查看到的udid'noReset': True,  # 是否重置APP'noSign': True,  # 是否不签名'unicodeKeyboard': True,  # 是否支持中文输入'resetKeyboard': True,  # 是否支持重置键盘'newCommandTimeout': 30  # 30秒没发送新命令就断开连接}return des

 2、再配置用例层的conftest.py文件

import time
import pytest
from appium import webdriverdriver = None
# 启动安卓系统中的计算器app
@pytest.fixture()
def start_app(android_setting):global driverdriver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',android_setting)return driver# 关闭安卓系统中的计算器app
@pytest.fixture()
def close_app():yield drivertime.sleep(2)driver.close_app()

3、配置pytest.ini文件进行分组设置

四、编写run_all_cases.py测试执行入口文件 

import os
import pytest# 当前路径(使用 abspath 方法可通过dos窗口执行)
current_path = os.path.dirname(os.path.abspath(__file__))
# json报告路径
json_report_path = os.path.join(current_path,'report/json')
# html报告路径
html_report_path = os.path.join(current_path,'report/html')# 执行pytest下的用例并生成json文件
pytest.main(['-s','-v','--alluredir=%s'%json_report_path,'--clean-alluredir'])
# 把json文件转成html报告
os.system('allure generate %s -o %s --clean'%(json_report_path,html_report_path))

五、编写测试用例

在testcases层下有两个业务子模块 test_add_sub_module 和 test_mul_div_module;

1、test_add_sub_module模块下test_add.py文件

代码如下:

import allure
from appium.webdriver.webdriver import By@allure.epic('安卓计算机项目')
@allure.feature('V1.0版本')
class TestAddSub():@allure.story('加法运算')@allure.title('[case01] 验证计算机能否正常完成加法功能')# @pytest.mark.add_basicdef test_cases01(self,start_app,close_app):with allure.step('1、启动安卓系统中的计算机app'):driver = start_appwith allure.step('2、依次按下9、+、8、='):driver.find_element(By.XPATH,'//android.widget.Button[@resource-id="com.sky.jisuanji:id/btn9"]').click()driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/jia"]').click()driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/btn8"]').click()driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/denyu"]').click()actual_result = driver.find_element(By.XPATH, '//android.widget.EditText[@resource-id="com.sky.jisuanji:id/text"]').textwith allure.step('3、验证实际结果是否正确'):# 断言 实际结果 == 17.0assert actual_result == '17.0'

2、test_add_sub_module模块下test_sub.py文件

代码如下:

import allure
from appium.webdriver.webdriver import By@allure.epic('安卓计算机项目')
@allure.feature('V1.0版本')
class TestAddSub():@allure.story('减法运算')@allure.title('[case01] 验证计算机能否正常完成减法功能')def test_cases01(self,start_app,close_app):with allure.step('1、启动安卓系统中的计算机app'):driver = start_appwith allure.step('2、依次按下6、-、2、='):driver.find_element(By.XPATH,'//android.widget.Button[@resource-id="com.sky.jisuanji:id/btn6"]').click()driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/jian"]').click()driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/btn2"]').click()driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/denyu"]').click()actual_result = driver.find_element(By.XPATH, '//android.widget.EditText[@resource-id="com.sky.jisuanji:id/text"]').textwith allure.step('3、验证实际结果是否正确'):# 断言 实际结果 == 4.0assert actual_result == '4.0'

3、test_mul_div_module模块下test_mul.py文件

代码如下:

import allure
from appium.webdriver.webdriver import By@allure.epic('安卓计算机项目')
@allure.feature('V1.0版本')
class TestAddSub():@allure.story('乘法运算')@allure.title('[case01] 验证计算机能否正常完成乘法功能')def test_cases01(self,start_app,close_app):with allure.step('1、启动安卓系统中的计算机app'):driver = start_appwith allure.step('2、依次按下3、*、4、='):driver.find_element(By.XPATH,'//android.widget.Button[@resource-id="com.sky.jisuanji:id/btn3"]').click()driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/chen"]').click()driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/btn4"]').click()driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/denyu"]').click()actual_result = driver.find_element(By.XPATH, '//android.widget.EditText[@resource-id="com.sky.jisuanji:id/text"]').textwith allure.step('3、验证实际结果是否正确'):# 断言 实际结果 == 12.0assert actual_result == '12.0'

4、test_mul_div_module模块下test_div.py文件

代码如下:

import allure
from appium.webdriver.webdriver import By@allure.epic('安卓计算机项目')
@allure.feature('V1.0版本')
class TestAddSub():@allure.story('除法运算')@allure.title('[case01] 验证计算机能否正常完成除法功能')def test_cases01(self,start_app,close_app):with allure.step('1、启动安卓系统中的计算机app'):driver = start_appwith allure.step('2、依次按下8、*、4、='):driver.find_element(By.XPATH,'//android.widget.Button[@resource-id="com.sky.jisuanji:id/btn8"]').click()driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/chu"]').click()driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/btn4"]').click()driver.find_element(By.XPATH, '//android.widget.Button[@resource-id="com.sky.jisuanji:id/denyu"]').click()actual_result = driver.find_element(By.XPATH, '//android.widget.EditText[@resource-id="com.sky.jisuanji:id/text"]').textwith allure.step('3、验证实际结果是否正确'):# 断言 实际结果 == 2.0assert actual_result == '2.0'

六、运行结果生成测试报告

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/64429.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详情:揭秘A100、A800、H800、V100在HPC与大模型训练中的霸权

关键词:AIGC;NLP;ChatGLM;AGI;LLAMA;BERT;GLM;LLVM;LSAT;ChatGPT;深度学习;高性能计算;大语言模型;大型语言模…

关于改简历的那点事

前两天突然有个朋友找我帮忙看下简历,说为什么投了简历效果不大,让我帮看下有什么问题。 想起前段时间我也是为了换工作改简历简直要挠破头 从上到下讲下我改简历的经过吧 一、整体篇幅 修改前(4页):个人信息求职意…

那些简历造假拿 Offer 的程序员,后来都怎么样了?

四大项目,挑战Python全栈工程师? https://edu.csdn.net/topic/python115?utm_sourcecxrs_bw 脉脉有个网友说,同事靠简历造假和银行流水造假,进了腾讯。 腾讯啊亲。 关键是,年薪60万,这就更羡煞人了。 这…

修改简历有用吗

看情况,一般都是很有用哒!简历修改会突出你的重点和优点,优化你的简历内容,让面试官一眼看到简历就被吸引了! 如以上图片所示。

从2D图像生成3D模型,基于Im2Avatar

原文链接:Im2Avatar: Colorful 3D Reconstruction from a Single Imagegithub.com 这个模型不仅可以生成3D模型,还可以生成颜色,现在我就介绍一下生成形状的部分,这个网络不是end to end的形式所以形状和颜色是分别训练的。源代码…

【推荐收藏】13个强大的Al网站

编辑:机器学习算法与Python实战 1、只需几分钟就能轻松地生成一个标志、书籍封面、横幅和更多。https://stockimg.ail 2、有史以来最逼真、功能最全面的人工智能语音软件。它从你的文本输入中为你提供最引人注目、最丰富和最逼真的声音。https://beta.elevenlabs.io…

即时通讯工具腾讯 QQ v9.1.9.26361 绿色便携版

腾讯出品的即时通讯工具 QQ 9.0 的口号是“从心出发 趣无止境”,界面全新改版,吸收了 QQ for Mac 的界面元素,效率变得更高,从登陆到主界面再到对话面板都和以往截然不同,风格更加现代化,也更扁平化&#x…

TIM网盘批量下载方法

0 x 00 引言 2022年12月5日TIM云文件将要停服, 网盘里有我11G的资料, 所以需要批量的将文件下载下来, 本文将提供一种Windows端TIM云文件下载的方法. 0 x 01 运行环境 操作系统: Windows 11 专业版 22H2TIM版本: TIM3.4.2(22058) 0 x 02 批量下载方法 1. 点击到TIM网盘根目录…

Android Studio实现一个新闻App

文章目录 一、项目概述二、开发环境三、项目演示四、项目总结五、源码获取 一、项目概述 本次项目实现了一个新闻App,通过调用第三方API获得新闻数据并显示。具有十几个页面,底部导航栏,数据库,滑动页面等。主要功能就和我们平时…

iOS新闻客户端开发教程8-加载更多和新闻详情

今天介绍下iOS新闻客户端App的2个功能点的开发:新闻列表加载更多 和 新闻详情页。 新闻列表加载更多 1.新建加载更多的单元格Cell,NewsMoreCell.xib 拖拽Label和Loading框,设置约束,如下图: 2.新建NewsMoreCell类…

Android 实践:做一款新闻 APP

跟代码相关的工作,大多唯手熟尔,所以这里花了点时间做了款简易版的新闻 APP,虽然都是些基础的内容,不过还是可以加深自己对部分代码的理解。至少,可以加深自己的记忆 步骤 依赖库网络请求网络解析界面布局最后运行界面运行GIF完整代码下载地址(github)依赖库 过程中需要…

【苹果iMessage相册推信息推】那些新功效理当可以或许压倒您。保护用户隐私是苹果的起点之一

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

iOS 推送手机消息背后的技术

作者:allenzzhao,腾讯 IEG运营开发工程师 消息推送我们几乎每天都会用到,但你知道iOS中的消息推送是如何实现的吗?本文将从推送权限申请,到本地和远程消息推送,再到App对推送消息的处理等多个步骤&#xf…

微信里有人每天早上发的早报新闻是从哪里获取的?

微信里有人每天早上发的早报新闻是从哪里获取的? 是专门有人做这种新闻搜集嘛?还是有什么渠道可以获取这样的早报新闻资讯呢? 其实,他们都是从一些大的新闻网站上挑选每日重要的新闻资讯,一般是12条,整理好,然后第二天早上发到群里或朋友圈中,使人们利用碎片化时间,很…

iOS新闻客户端开发教程7-新闻列表

在上教程中,我们介绍了二级导航栏的开发,今天我们来讲解iOS开发中非常常用和重要的组件:“列表”,即UITableView。本节课程将会介绍横向滚动列表和竖向滚动列表,分别来实现二级栏目滑动切换和新闻内容列表的功能。 UIT…

(Android+IOS)正在做一个新闻App,做的差不多了,听听大家的建议 (图)

(AndroidIOS)正在做一个新闻App,做的差不多了,听听大家的建议! 新闻采集器做好了,前端展示APP界面感觉还不是很好,还需要改进改进,希望发布(Android和IOS版本)前听听大家的建议! 新闻采集器做好了,前端展示APP界面感觉还不是很好,还需要改进改进,希望发布前听听大家的建议!

iOS 摸鱼周报 #83 | ChatGPT 的风又起来了

本期概要 本期话题:各大搜索引擎开始接入类 ChatGPT 功能本周学习:Python 中的匿名函数与闭包内容推荐:iOS 越狱检测、获取虚拟内存状态、使用 KeyChain 进行持久化等内容摸一下鱼:Stable Diffusion 功能尝鲜;关于技术…

编程和数学是什么关系?编程学习为什么会这么火呢?

近两年,编程学习成为了一个热门话题,其热度不亚于之前的奥数,为什么突然会有这么多人想要学编程,其中不限于互联网从业者,而更多是中小学学生,那么,今天悉之君就带大家一探究竟。 什么是编程&a…

计算机编程数学英语不好怎么办,英语和数学不好的人是不是学不会编程?

原标题:英语和数学不好的人是不是学不会编程? 收到很多咨询的留言,学生总是会问: “我成绩不好,能学好编程吗?” “我数学不好是不是代表逻辑思维不行?” “我英语都不及格,那么多单…

用编程学数学:让数学不枯燥,让编程不神秘!

许多人总爱问:编程那么难,能学好吗,或者学编程到底能干啥?等等诸如此类的问题。 但是,其实编程并没有大家想象中的那么难,编程要培养的也只是一项基础的思维逻辑。 编程所需要的很多能力和数学是相通的。…