老板叫我写个APP自动化--Yaml文件读取--内附整个框架源码

简介: 老板叫我写个APP自动化--Yaml文件读取--内附整个框架源码

前言

这里是清安,前段时间停更了很久,主要是在是自动化框架,也就是本文所述的这些东西。框架已经写完了,剩下的就是慢慢分解,写成文章的形式呈现出来。

readyaml

本章还是说上一章所没有讲到的内容。读取yaml文件。我们是以yaml文件作为自动化用例的基础的。所以读取它必不可少。即使是excel也是一样的。

看代码

# encoding=utf-8
# ----清安—---
# 微信:qing_an_an
# 公众号:测个der
import yaml
class YamlRead:
    def __init__(self, yamlPath):
        '''如果是第一次调用,读取yaml文件,否则直接返回之前保存的数据'''
        if os.path.exists(yamlPath):
            self.yamlPath = yamlPath
        else:
            raise FileNotFoundError('yaml文件不存在')
        self._data = None  # 保存yaml的数据
    @property  # 把一个方法变成属性来调用,
    def getData(self):
        if not self._data:
            with open(self.yamlPath, mode='rb') as f:
                self._data = yaml.load(f, Loader=yaml.FullLoader)
        return self._data

此处有一定注释,简单的理解就是传入了一个yaml文件路径,做了一系列的判断,最后获取其中的内容,并返回结果值。其他的代码都是做的校验这么一个操作,处理异常情况的。

这里为了后面调用不打(),所以这里加了一个装饰器,将getData当作属性来调用。如果不懂或者不理解的,可以看看前面的python文章。

如何运用

结合上节所说的configs类,在case中写一个yaml文件。上代码:

# encoding=utf-8
# ----清安—---
# 微信:qing_an_an
# 公众号:测个der
import os
class Config:
    ''' 项目下所有文件的相对路径'''
    Base_Path = os.path.abspath(os.path.dirname(os.path.abspath(__file__)) + '/..')
    Base_yaml = Base_Path + r'\case\login.yaml'
re = Config()

随后调用打印一下就能看到,路径拼接已经OK了。那么这个是不是万能的呢?答案是,不是的。这只是方便某些文件的管理,并不是万能的方法。

写完这里,我们随后直接在上述的YamlRead中调用一下

from configs.readconfig import re
r = YamlRead(re.Base_YAML).getData
print(r)

上述例子中我省略了其中的代码,重复复制太麻烦了,调用后打印就能得到如下结果:

[{'mode': 'time', 'time': 5}, {'until': 'presence_located', 'mode': 'inputs_', 'loc': 'id', 'ele': 'com.mxchip.project352:id/etPhone', 'value': '123456', 'time': 10}, {'until': 'presence_located', 'mode': 'inputs_', 'loc': 'class name', 'ele': 'android.widget.EditText', 'value': 'jx123456', 'num': 1}, {'until': 'visibility_located', 'mode': 'clicks_', 'loc': 'id', 'ele': 'com.mxchip.project352:id/cbAgree'}, {'mode': 'time', 'time': 5}, {'until': 'text_element', 'mode': 'clicks_', 'loc': 'xpath', 'text': '登录', 'ele': '//*[@text="登"]'}]

最后,贴出我的yaml文件格式出来:

总结

如果你成功读出后,结果跟我一致,那么恭喜你,本章内容成功学完。

「最后项目的源码地址贴出来:https://gitee.com/qinganan/App_352life.git感兴趣的可以直接clone到本地研究。

目录
相关文章
|
3月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
4月前
|
移动开发 前端开发 JavaScript
鸿蒙NEXT时代你所不知道的全平台跨端框架:CMP、Kuikly、Lynx、uni-app x等
本篇基于当前各大活跃的跨端框架的现状,对比当前它们的情况和未来的可能,帮助你在选择框架时更好理解它们的特点和差异。
490 0
|
2月前
|
JSON 自然语言处理 数据格式
使用Tabs选项卡组件快速搭建鸿蒙APP框架
ArkUI提供了很多布局组件,其中Tabs选项卡组件可以用于快速搭建鸿蒙APP框架,本文通过案例研究Tabs构建鸿蒙原生应用框架的方法和步骤。
345 5
使用Tabs选项卡组件快速搭建鸿蒙APP框架
|
1月前
|
数据采集 人工智能 自然语言处理
Playwright MCP 浏览器自动化框架全面解析
Playwright MCP是微软推出的开源项目,结合Playwright与MCP协议,让AI通过结构化数据直接操作浏览器。告别传统视觉识别,实现高效、精准的网页自动化,广泛应用于测试、爬虫、办公自动化等场景,大幅提升效率与可靠性。
|
2月前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
3月前
|
存储 Java PHP
轻量化短视频电商直播带货APP源码全解析:核心功能与设计流程​
在电商直播热潮下,开发专属直播带货APP成为抢占市场关键。本文详解原生开发轻量化APP的核心功能与全流程设计,涵盖用户登录、商品浏览、直播互动、购物车、订单及售后功能,并介绍安卓端Java、苹果端Object-C、后台PHP的技术实现,助力打造高效优质的直播电商平台。
|
4月前
|
Web App开发 开发框架 .NET
Playwright 自动化测试系列(6)| 第三阶段:测试框架集成​指南:参数化测试 + 多浏览器并行执行
Pytest 与 Playwright 集成可提升自动化测试效率,支持参数化测试、多浏览器并行执行及统一报告生成。通过数据驱动、Fixture 管理和并行优化,显著增强测试覆盖率与执行速度,适用于复杂 Web 应用测试场景。
|
4月前
|
测试技术 API C++
Playwright 自动化测试系列(7)| 第三阶段:测试框架集成​​Page Object 模式
本课程详解Playwright测试框架中的Page Object模式,通过电商登录-下单实战演示PO架构设计与高级技巧,结合Pytest实现多用户测试。重点解析PO模式提升代码复用性、降低维护成本的核心价值,并提供常见问题解决方案,助力构建高可维护性的自动化测试体系。
|
5月前
|
消息中间件 缓存 小程序
婚恋交友相亲公众号app小程序系统源码「脱单神器」婚恋平台全套代码 - 支持快速二次开发
这是一套基于SpringBoot + Vue3开发的婚恋交友系统,支持微信公众号、Uniapp小程序和APP端。系统包含实名认证、智能匹配、视频相亲、会员体系等功能,适用于婚恋社交平台和相亲交友应用。后端采用SpringBoot 3.x与MyBatis-Plus,前端使用Vue3与Uniapp,支持快速部署和二次开发。适合技术团队或有经验的个人创业者使用。
421 8