【Airtest】UI自动化测试的数据分离实践

简介: 【Airtest】UI自动化测试的数据分离实践

网络异常,图片无法展示
|


前言



今天我们来聊一聊数据分离这个话题,如果我们在网上逛一圈,就很容易找到很多关于 Python数据分离 相关的内容。


测试数据分离 常用于接口自动化测试和UI自动化测试中,有很多使用Airtest项目进行自动化测试的同学,也在积极思考该如何在Airtest项目中实现数据分离。


那么下文我们将以1个简单的示例,来看下我们可以如何在Airtest项目中实现数据分离:


1. 示例介绍



编写过Poco脚本的同学都知道,它的操作都是基于控件的。假设我们把需要操作的控件信息都存在Excel表格里面,那么我们的脚本只需要从Excel中读取到我们所需要的控件信息,然后对该控件进行操作即可。


如果控件信息发生了变化,我们也只需要定期维护Excel表格,而不需要处理我们的自动化脚本。


所以今天的示例大致是完成以下事情:


  • 把控件数据保存到指定的Excel表格里
  • 从Excel表格中读取控件信息待用
  • 处理表格读到的控件信息并实现控件操作


2. 读取Excel单元格里的数据



假设我们在 D:\demo\ 下保存了1个名为 NetEase_Cloud_Music.xls 的Excel表格,用于存储下述控件信息:


网络异常,图片无法展示
|


每行的内容代表着1个完整的控件信息,准备好表格后,我们就可以开始编写对应的脚本把这些控件信息读取出来了。


1)安装 xlrd 第三方库


Python操作Excel表格,有一个专门的第三方库叫 xlrd 。我们需要在使用的Python环境中安装上该第三方库:


pip install xlrd
复制代码


安装成功后,我们还可以使用 pip list 命令检查下。


这里我们还是使用AirtestIDE来编写脚本,在IDE的选项--设置中,设置使用安装了 xlrd 库的Python环境:


网络异常,图片无法展示
|


此时在 .air 脚本中,我们就可以直接使用 import xlrd 来调用这个第三方库了。


2)读取表格数据存储到列表中


import xlrd
# 打开指定路径的Excel文件
ex = xlrd.open_workbook(r'D:\demo\NetEase_Cloud_Music.xls')
# 获取指定名称的sheet
sheet = ex.sheet_by_name('elements')
# 定义1个控列表,用于存放控件信息
dat = []  
# 遍历表格的每一行数据,将每行的控件信息构建成1个字典添加到列表中    
for row in range(sheet.nrows):  
    cells = sheet.row_values(row)  
    data={'element':cells[0],'attributes':cells[1],'position':cells[2]}
    dat.append(data) 
复制代码


我们可以把列表的内容 print 出来看看我们获取的信息是否正确:


网络异常,图片无法展示
|


3)封装成读取控件信息的函数


为了方便使用,我们可以把这个读取表格数据这部分的内容封装成函数,最终返回我们想要的保存了控件信息的列表即可:


def get_excel():
    ex = xlrd.open_workbook(r'D:\demo\NetEase_Cloud_Music.xls')
    sheet = ex.sheet_by_name('elements')
    dat = []  
    for row in range(sheet.nrows):  
        cells = sheet.row_values(row)  
        data={'element':cells[0],'attributes':cells[1],'position':cells[2]}
        dat.append(data) 
    return dat
复制代码


3. 处理控件信息并实现控件操作



拿到了我们需要的控件信息之后,我们预期的情况是,通过控件名称,匹配到对应的属性和定位脚本来实现控件操作:


def another_poco(list,element):
    for li in list:
        if li.get('element') == element:
            if li.get('attributes') == 'text':
                return poco(text=li.get('position'))
            elif li.get('attributes') == 'name':
                return poco(li.get('position'))
复制代码


这里实现了1个函数,给它传入对应的列表(读取到的表格数据)和想要操作的控件名称,即可返回poco定位脚本,帮助我们实现后续的操作:


dat = get_excel()
start_app("com.netease.cloudmusic")
another_poco(dat,'每日推荐').click()
sleep(1.0)
another_poco(dat,'播放全部').click()
keyevent("BACK")
keyevent("BACK")
another_poco(dat,'每日推荐').wait_for_appearance()
another_poco(dat,'首页搜索').click()
text('张艺兴')
another_poco(dat,'单曲').wait_for_appearance()
another_poco(dat,'单曲').click()
复制代码


网络异常,图片无法展示
|


小结



那么以上内容就是我们在Airtest项目上实现数据分离的1个小实践,希望可以给同学们提供一些简单的思路。


那在实际项目的应用过程中呢,还需要考虑更多的一些问题,比如控件重复的情况、控件数据量庞大的情况、控件数据分表保存的情况等等,这些就有待大家继续深入拓展实现了~

相关文章
|
3天前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
1天前
|
Ubuntu jenkins 测试技术
软件测试中的自动化与持续集成实践
【9月更文挑战第15天】在软件开发的快节奏世界中,自动化测试和持续集成(CI)已成为确保质量和效率的关键策略。本文旨在揭示如何通过实施自动化测试框架和CI流程来优化开发周期,减少人为错误,并加快产品上市时间。我们将探讨一些实用的工具和技术,以及它们如何帮助团队实现更流畅、更可靠的软件发布。
|
2天前
|
监控 jenkins 测试技术
软件测试中的自动化测试策略与实践
本文将深入探讨自动化测试在软件开发中的重要性及其实施策略。我们将从自动化测试的基本概念入手,分析其在提高软件质量、缩短开发周期和降低维护成本方面的优势。通过具体案例,展示如何有效地规划和执行自动化测试,以及如何评估其效果。
11 1
|
3天前
|
运维 应用服务中间件 nginx
自动化运维的利器:Ansible入门与实践
【9月更文挑战第13天】在这个快速发展的IT时代,自动化运维已成为提升效率、减少失误的关键。本文将带你了解Ansible,一个强大的自动化工具,它简化了配置管理、应用部署和任务自动化。通过实际案例,我们将探索Ansible的基本概念、安装步骤、关键组件以及如何编写Playbook来自动化日常任务。无论你是新手还是有经验的运维专家,这篇文章都将为你提供宝贵的见解和技巧,让你在自动化运维的道路上更进一步。
|
4天前
|
Devops jenkins 测试技术
敏捷测试价值观、方法和实践读书笔记(10)
本文介绍了敏捷测试的延伸实践,重点讨论了持续集成(CI)和持续部署(CD)的概念与实践方法。持续集成强调频繁提交代码至主干并自动化构建测试,确保快速反馈和高质量代码。持续部署则进一步实现自动化部署,通过蓝绿部署、金丝雀发布等方式提升软件交付效率。此外,文章还探讨了持续反馈机制,如A/B测试和混沌工程,以及DevOps文化下的测试策略,强调测试在整个开发流程中的重要性。
11 0
敏捷测试价值观、方法和实践读书笔记(10)
|
4天前
|
XML 存储 API
敏捷测试价值观、方法和实践读书笔记(8)
本文介绍了API的基础知识,区分了Web Service和Web API的概念,详细阐述了Web Service中的SOAP服务和REST服务的特点及区别。同时,文章还探讨了如何在项目中进行API测试,包括API测试的类型和实施阶段,强调了API在现代软件开发中的重要性和优势。
6 0
敏捷测试价值观、方法和实践读书笔记(8)
|
4天前
|
JavaScript 前端开发 Java
敏捷测试价值观、方法和实践读书笔记(7)
本文介绍了BDD(行为驱动开发)的Given-When-Then方法,并详细描述了如何在Java环境中使用Cucumber框架实现BDD测试。内容涵盖配置环境、修改POM文件、编写Feature文件及步骤定义文件、运行测试等过程。同时,提供了使用Cucumber和Selenium对Web页面进行测试的具体示例,并探讨了BDD在团队中的实施策略,包括不同角色之间的协作流程与自动化测试框架的选择。
9 0
敏捷测试价值观、方法和实践读书笔记(7)
|
2天前
|
测试技术 持续交付
软件测试中的自动化测试实践与探索
在软件开发生命周期中,测试阶段是确保产品质量和稳定性的关键环节。随着技术的快速发展,自动化测试逐渐成为提升测试效率和覆盖率的重要手段。本文将探讨自动化测试的基本概念、工具选择、实施策略以及面临的挑战,旨在为读者提供关于如何在项目中有效应用自动化测试的指导性见解。
8 0
|
2天前
|
存储 运维 监控
构建高效运维体系:从监控到自动化的全方位实践
在当今信息技术飞速发展的时代,运维作为保障信息系统稳定运行的关键环节,其重要性不言而喻。本文将围绕如何构建一个高效的运维体系进行深入探讨,内容涵盖从监控、日志分析到自动化运维工具的选择与应用,以及在实际工作中的经验和案例分享。通过本文的介绍,读者将能够了解到如何在复杂多变的技术环境中,确保系统的高可用性、高性能和安全性,为业务连续性提供坚实保障。
|
3天前
|
运维 监控 数据可视化
高效运维的秘密武器:自动化工具链的构建与实践在当今数字化时代,IT系统的复杂性和规模不断增加,使得传统的手动运维方式难以应对日益增长的业务需求。因此,构建一套高效的自动化工具链成为现代运维的重要任务。本文将深入探讨如何通过自动化工具链提升IT运维效率,确保系统稳定运行,并实现快速响应和故障恢复。
随着企业IT架构的不断扩展和复杂化,传统的手动运维已无法满足业务需求。自动化工具链的构建成为解决这一问题的关键。本文介绍了自动化工具链的核心概念、常用工具及其选择依据,并通过实际案例展示了自动化工具链在提升运维效率、减少人为错误、优化资源配置等方面的显著效果。从监控系统到自动化运维平台,再到持续集成/持续部署(CI/CD)的流程,我们将一步步揭示如何成功实施自动化工具链,助力企业实现高效、稳定、可靠的IT运维管理。

热门文章

最新文章