APP自动化测试-Python+Appium+Pytest+Allure框架实战封装(详细)

这篇具有很好参考价值的文章主要介绍了APP自动化测试-Python+Appium+Pytest+Allure框架实战封装(详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

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

编写常规的线性脚本具体的步骤如下:
1、设计待测试APP的自动化测试用例
2、新建app测试项目
3、配置conftest.py文件等
4、编写整体app测试用例运行文件
5、把设计好的自动化测试用例转化成脚本备注

以下示例采用计算器为示例

前置条件:下载第三方库
下载 appium-python-client
下载 pytest
下载 allure-pytest

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

APP自动化测试-Python+Appium+Pytest+Allure框架实战封装(详细),软件测试,appium,自动化测试,appium,pytest,软件测试,自动化测试,app自动化测试,自动化测试框架,python自动化测试

2、新建APP测试项目

APP自动化测试-Python+Appium+Pytest+Allure框架实战封装(详细),软件测试,appium,自动化测试,appium,pytest,软件测试,自动化测试,app自动化测试,自动化测试框架,python自动化测试

3、配置文件信息

先配置外层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

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

import time
import pytest
from appium import webdriver

driver = None
# 启动安卓系统中的计算器app
@pytest.fixture()
def start_app(android_setting):
    global driver
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',android_setting)
    return driver

# 关闭安卓系统中的计算器app
@pytest.fixture()
def close_app():
    yield driver
    time.sleep(2)
    driver.close_app()

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

APP自动化测试-Python+Appium+Pytest+Allure框架实战封装(详细),软件测试,appium,自动化测试,appium,pytest,软件测试,自动化测试,app自动化测试,自动化测试框架,python自动化测试

4、编写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))

5、编写测试用例

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

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_basic
    def test_cases01(self,start_app,close_app):
        with allure.step('1、启动安卓系统中的计算机app'):
            driver = start_app
        with 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"]').text
        with allure.step('3、验证实际结果是否正确'):
            # 断言 实际结果 == 17.0
            assert actual_result == '17.0'

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_app
        with 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"]').text
        with allure.step('3、验证实际结果是否正确'):
            # 断言 实际结果 == 4.0
            assert actual_result == '4.0'

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_app
        with 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"]').text
        with allure.step('3、验证实际结果是否正确'):
            # 断言 实际结果 == 12.0
            assert actual_result == '12.0'

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_app
        with 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"]').text
        with allure.step('3、验证实际结果是否正确'):
            # 断言 实际结果 == 2.0
            assert actual_result == '2.0'

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

APP自动化测试-Python+Appium+Pytest+Allure框架实战封装(详细),软件测试,appium,自动化测试,appium,pytest,软件测试,自动化测试,app自动化测试,自动化测试框架,python自动化测试

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

APP自动化测试-Python+Appium+Pytest+Allure框架实战封装(详细),软件测试,appium,自动化测试,appium,pytest,软件测试,自动化测试,app自动化测试,自动化测试框架,python自动化测试

二、接口自动化项目实战

APP自动化测试-Python+Appium+Pytest+Allure框架实战封装(详细),软件测试,appium,自动化测试,appium,pytest,软件测试,自动化测试,app自动化测试,自动化测试框架,python自动化测试

三、Web自动化项目实战

APP自动化测试-Python+Appium+Pytest+Allure框架实战封装(详细),软件测试,appium,自动化测试,appium,pytest,软件测试,自动化测试,app自动化测试,自动化测试框架,python自动化测试

四、App自动化项目实战

APP自动化测试-Python+Appium+Pytest+Allure框架实战封装(详细),软件测试,appium,自动化测试,appium,pytest,软件测试,自动化测试,app自动化测试,自动化测试框架,python自动化测试

五、一线大厂简历

APP自动化测试-Python+Appium+Pytest+Allure框架实战封装(详细),软件测试,appium,自动化测试,appium,pytest,软件测试,自动化测试,app自动化测试,自动化测试框架,python自动化测试

六、测试开发DevOps体系

APP自动化测试-Python+Appium+Pytest+Allure框架实战封装(详细),软件测试,appium,自动化测试,appium,pytest,软件测试,自动化测试,app自动化测试,自动化测试框架,python自动化测试

七、常用自动化测试工具

APP自动化测试-Python+Appium+Pytest+Allure框架实战封装(详细),软件测试,appium,自动化测试,appium,pytest,软件测试,自动化测试,app自动化测试,自动化测试框架,python自动化测试

八、JMeter性能测试

APP自动化测试-Python+Appium+Pytest+Allure框架实战封装(详细),软件测试,appium,自动化测试,appium,pytest,软件测试,自动化测试,app自动化测试,自动化测试框架,python自动化测试

九、总结(尾部小惊喜)

梦想是风帆,奋斗是航船,只有不断追逐才能抵达成功的彼岸。踏浪前行,勇往直前,拼尽全力,终将扬起胜利的风帆。坚信自己,勇敢闯荡,你必能驶向辉煌,书写属于自己的壮丽篇章。

人生犹如攀登高峰之路,越是陡峭的山势,越显我们的勇气。跨越困难,超越自我,拼搏奋斗铸就辉煌。不忘初心,砥砺前行,坚定信念,你必能征服一切,创造属于自己的辉煌人生。

命运的舞台属于勇敢者,每一次努力都是改变的契机。放飞心灵,砥砺前行,只有奋斗才能创造无限可能。相信自己的力量,坚持不懈,你将开启一段辉煌的征程,书写属于自己的壮丽传奇。文章来源地址https://www.toymoban.com/news/detail-619497.html

到了这里,关于APP自动化测试-Python+Appium+Pytest+Allure框架实战封装(详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python+appium+pytest自动化测试-参数化设置

    来自APP Android端自动化测试初学者的笔记,写的不对的地方大家多多指教哦。(所有内容均以微博V10.11.2版本作为例子) 在自动化测试用例执行过程中,经常出现执行相同的用例,但传入不同的参数,导致我们需要重复的写用例,这样会使我们的用例变得很长,冗余,很多地

    2023年04月08日
    浏览(56)
  • Python+Requests+PyTest+Excel+Allure 接口自动化测试实战

    本文主要介绍了Python+Requess+PyTest+Excel+Allure 接口自动化测试实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 Unittest是Python标准库中自带的单元测试框架,Unittest有时候也被称为PyUnit,就像

    2024年02月07日
    浏览(65)
  • 一个简单的接口自动化测试框架:Python+Requests+Pytest+Allure

    project:api_test ——api_keyword ————api_key.py:接口驱动类 ——case ————test_cases.py:测试套件和测试用例 ——report_allure( 无需创建 ):allure报告 ——result( 无需创建 ):测试用例运行结果 ——VAR ————VAR.py:常量类 conftest.py:项目级别fixture main.py:主函数

    2024年02月03日
    浏览(73)
  • Python接口自动化测试-篇1(postman+requests+pytest+allure)

    Python接口自动化测试是一种使用Python编程语言来编写脚本以自动执行针对应用程序接口(APIs)的测试过程。这种测试方法专注于检查系统的不同组件或服务之间的交互,确保它们按照预期规范进行通信,而不涉及用户界面(UI)的验证。 目录 一、接口测试基础 二、工具实现

    2024年04月17日
    浏览(65)
  • Python+Pytest+Allure+Git+Jenkins数据驱动接口自动化测试框架

    一、接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。其中接口协议分为HTTP,RPC,Webservice,Dubbo,RESTful等类型。 接口测试流程 1、需求评审,熟悉业务和需求 2、开发提供接口文档 3、编写接口测

    2024年02月08日
    浏览(83)
  • Python、Pytest、Allure、Selenium和Jenkins实现自动化测试集成实例

    下方查看历史精选文章 重磅发布 - 自动化框架基础指南pdfv1.1 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 本文将介绍如何使用Python、Pytest、Allure、Selenium和Jenkins实现测试自动

    2024年02月09日
    浏览(56)
  • 接口自动化测试-Python+Requests+Pytest+YAML+Allure配套撸码(详细)

    接口自动化框架:Python+Requests+Pytest+YAML+Allure 通过 Python+Requests 来发送和处理HTTP协议的请求接口,使用 Pytest 作为测试执行器,使用 YAML 来管理测试数据,使用 Allure 来生成测试报告。 框架结构 api ==== 接口封装层,如封装HTTP接口为Python接口 common ==== 各种工具类 core ==== reques

    2024年02月15日
    浏览(62)
  • python+pytest+selenium+PO+allure+DDT实现web自动化测试

    python:编程语言 pytest:独立的、全功能的python单元测试框架 selenium:用于web应用程序测试的工具 allure:测试报告展示 ddt:数据驱动 1.1 python解释器 3.10版本 1.2 pycharm集成开发环境 社区版 下载浏览器驱动,浏览器驱动版本要与浏览器版本一致。 下载地址: Chrome:http://npm.ta

    2024年02月02日
    浏览(63)
  • (Python)Requests+Pytest+Allure接口自动化测试框架从0到1搭建

    前面,已经学习了如何用SpringBoot写接口以及与Mysql数据库进行交互,具体可查阅下面的这篇博客,今天学习一下基于Python的接口自动化测试框架的搭建,主要包括以下内容:利用request库发送请求,请求数据参数化处理,还涉及到数据库(Mysql+MongDB)方面的交互,包括如何取数

    2024年02月13日
    浏览(161)
  • python+playwright+pytest+allure+pom+yaml实现UI自动化测试

    https://gitee.com/giteetangll/playwright-demo Auth:登录认证保存后的认证信息 BasePage:封装playwright的基础方法 BuildInLibrary:环境变量存放文件夹,可进行用例参数关联 Common:存放公共方法抽离文件夹 Config:配置文件存放文件夹 Logs:存放断言失败的记录 Pages:存放页面对象文件 Test

    2024年02月11日
    浏览(81)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包