利用python的第三方openpyxl模块作Appium数据驱动测试

Python第三方模块openpyxl简介

openpyxl是专门用来读取和写入Excel文档的python第三方模块。本文将使用这个模块和appium工具进行自动化测试的数据驱动测试实践。python

安装openpyxl模块

使用下面命令来安装openpyxl:linux

$ pip install openpyxl

若是你使用的是ubuntu等linux系统的话,请在命令以前添加sudo命令:android

$ sudo pip install openpyxl

用ipython熟悉openpyxl操做

准备测试数据文档

接下来要准备下面测试android计算器的测试数据,请使用MS Office软件或其余相似软件打开一个Excel文件,输入下面内容并保存为“test_data.xlsx”:web

输入图片说明

本文件的百度网盘下载连接:https://pan.baidu.com/s/1hrS4pMW编程

**注意:**若是你电脑上没有能够编辑Excel文档的软件,能够安装开源的LibreOfficeubuntu

利用ipython学习openpyxl

建议使用IPython来熟悉openpyxl的使用方法,具体请查看openpyxl的官方文档,地址:https://openpyxl.readthedocs.io/en/default/api

在终端中输入下面命令启动ipython。服务器

$ ipython

继续在ipython交互环境中输入如下代码进行openpyxl的学习:app

In [13]: wb = openpyxl.load_workbook('test_data.xlsx')  #打开当前目录下的test_data.xlsx文件
In [14]: wb.get_sheet_names()                   #获取当前sheet名称
Out[14]: ['Sheet1']
In [15]: sheet = wb.get_active_sheet()     #新建sheet对象
In [16]: sheet.title   #查看新建sheet对象的标题
Out[16]: 'Sheet1'
In [17]: sheet['A1'].value   #查看sheet页中A1单元格的数值
Out[17]: '编号'
--略--
In [26]: sheet.rows   #sheet页中的行数对象
Out[26]: <generator object get_squared_range at 0x7fe384b47fc0>

从Excel表格读取测试数据进行appium自动化测试

下面要经过读取刚刚完成的“test_data.xlsx”表格中的元素id来定位并点击,android手机自带的计算器中对应的按钮,而且将每一条的执行结果记录在一个新的表格中。编辑器

请打开一个新的文本编辑器窗口,输入的代码以下,将文件保存为testCal.py:

#!/usr/bin/env python3
# coding=utf-8
import openpyxl       #此模块用于读写Excel表格
from appium import webdriver

desired_caps = {}
desired_caps['platformName'] = 'Android' #设置操做平台
desired_caps['platformVersion'] = '5.1.1' #操做系统版本
desired_caps['deviceName'] = 'Nexus 4' #设备名称
desired_caps['appPackage'] = 'com.android.calculator2'   #启动原生的计算器
desired_caps['appActivity'] = '.Calculator'  #同上,启动原生的计算器
desired_caps['udid'] = '04c5a5af52197902' #设备ID,能够经过adb devices命令查看
desired_caps['noReset'] = 'True' # 设置会话不会重置
#经过appium服务器,新建driver对象
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

wb = openpyxl.load_workbook('test_data.xlsx') # 加载测试数据表格
sheet = wb.get_sheet_by_name('Sheet1')
# 经过枚举函数来循环处理全部的数据行,注意去除标题行
for i, _ in enumerate(list(sheet.rows)[:-1]): 
    id = sheet['C' + str(i + 2)].value     # 读取测试数据字段
    driver.find_element_by_id(id).click() #点击指定的id的按键
    #元素定位到公式显示区域,获取此元素的文本值做为实际结果
    text = driver.find_element_by_id('com.android.calculator2:id/formula').text
    sheet['E' + str(i + 2)].value = text # 给E列赋值,实际返回结果
    expected_result = sheet['D' + str(i + 2)].value #获取预期结果字段
    # 判断实际结果和预期结果是否一致,一致的话标记pass,不然标记fail。
    if text == expected_result:    
        sheet['F' + str(i + 2)].value = 'pass'
    else:
        sheet['F' + str(i + 2)].value = 'fail'

wb.save('updatedTestData.xlsx')  # 另存为表格文档
driver.quit()

上面这段代码首先导入了openpyxl模块,也导入appium相关的模块,你能够用appium进行android手机自动化测试,若是你对appium不熟悉,能够参考我以前写的文章《利用IPython来学习Appium操做》来先学习一下。 接下来代码进行appium启动须要的相关设置,而后启动被测应用。继续经过openpyxl的函数来读取Excel表格数据,用for循环来遍历每一行测试数据,这里注意要排除掉第一行数据(也就是标题行)。在for循环内部对每一行数据都进行读取测试数据,执行测试和将实际结果和测试结果写入表格的操做。

最后成功运行上面代码后,查看新生成的测试结果'updatedTestData.xlsx'文件,结果以下: 输入图片说明

小结

利用python的openpyxl模块不仅是能够配合appium进行测试,一样能够和selenium等工具配合,并且也能用在api接口测试方面。 并且openpyxl模块的功能不单单是简单的读入和写入数据,它还有生成Excel图表,调整电子表格格式等功能,若是读者兴趣的话,能够深刻研究官方文档

参考文献:

《Python编程快速上手——让繁琐工做自动化》 AI Sweigart 著

相关文章
相关标签/搜索