Python自动化测试实战-Appium测试渠道包-Jenkins发邮件

什么是渠道包

我们平时如果需要下载一个 Android 的 APP,我们首先想到的是去市场平台上下载,这个平台就很多了,一般品牌的手机都有自己自带的市场,比如小米市场,华为应用市场,还有应用宝,360手机助手等很多渠道。产品上线前,为了确保各个渠道的包发布后,用户下载后功能正常,所以发布前,我们需要对各个渠道的包进行测试,渠道包怎么打此文不做讲解。比如下面的 7 个渠道的包,我们需要做的是对其进行安装后主要的功能测试。

假如你手上手机多,渠道包也不多的情况下,每台手机安装一个渠道包去人工测试是可行的,但是在手机资源不多,渠道包很多的情况下,我们就需要借助自动化去帮我们操作了。

自动化项目环境

在做渠道包验证前,我们先来看看这次项目的主要环境。

  • adb 环境
  • Appium 环境
  • 模拟器环境

adb 环境主要是操作 Android 设备的,adb 连接 Android 设备,还需要对 APP 进行安装卸载的操作。adb 是 sdk 包中的命令。

Appium 环境,我们通过 Appium 服务通过去操作 Android 系统达到自动化的目的,本文对 Appium 环境搭建不做展开,这些环境搭建以后单独写一篇 App 自动化环境搭建的文章分享,欢迎大家持续关注。

模拟器,有真机的情况也可以用真机,本文用的是夜神模拟器。用下面命令检查是否连接上设备。

如果没有连接上,可以用命令连接上。

自动化安装包并验证主功能

以上环境好了后,我们就可以对各个渠道包进行安装、验证主要功能、卸载操作。

我们把所有需要测试的取到包放在一个目录下,然后用es库里面的方法去获取这个目录下所有的文件的名称。

我们把它全部打印出来看一下效果。

用 adb 对包进行安装卸载

包名我们获取到了,接下来我们需要对包进行安装卸载操作。安装 apk 包我们用的 Appium 自带的 install_app 方法,卸载我们用 remove_app 方法。

我们先定义好启动 app 的必要参数。

然后对所有的取到包进行安装卸载的操作。

我们看到模拟器上,会有 app 不断的在安装卸载。

验证渠道包主功能

当然,我们的目的不是做安装卸载,而是安装后进行主要功能的验证,验证完后再卸载,再去安装另一个渠道包进行验证。所以,我们需要在安装之后插入验证的渠道包主功能的脚本。

验证功能的脚本大家需要根据自己的 app 写相应的脚本了。

生成报告

验证功能也完成后,我们需要生成报告。

我们需要下载生成中文报告的库:HTMLTestRunnerCN,下载后放在 Python 的安装路径下。然后导入即可。

为了让项目看起来更完整,我们用上 unittest 框架,在框架中调用生成报告的库。

unittest 框架写脚本

unittest框架做自动化测试的用法详见之前分享的文章:自动化测试-Python中unittest框架 ,我们把上面的 caps参数和 driver 放在 setUpClass 方法里。把安装、验证主功能、卸载脚本放在 test 开头的方法里。

然后我们调用刚才的 HTMLTestRunner 库生成中文报告。

这样在同级目录下就会生成一个 report.html 的报告打开,打开就可以看到自动化案例的执行情况。

发送报告邮件

接下来我们把脚本集成到 Jenkins 上面并执行完后自动把报告通过邮件形式发出来。

关于发邮件的方法,之前也分享过一篇文章:30行Python代码实现自动收发邮件,这篇文章里没有加入发送附件的功能,只能发送文本,所以我们需要在发送文本的地方略作修改。

我们需要导入可以发送附件的库:MIMEMultipart。

开头我们加入发送附件的方法,传入附件的名称做参数。

中间代码和那边文章一样,最后调用时加入刚才生成的报告的绝对路径参数。

发送邮件的方法写好后,我们在刚才的 unittest 脚本中调用此方法发送邮件。

这样,每次执行完脚本后,就把发邮件到你邮箱。

测试脚本上传到Git仓库

由于测试脚本后期维护时会有变动,我们把脚本提交到git仓库,这样使用集成工具 Jenkins 每次执行前先拉取最新的测试脚本,然后执行代码。

Git 环境的安装大家自行搜索,我是安装 Git 命令操作和可视化界面操作。

GitHub 仓库

我们先在 GitHub 上新建一个仓库,我建了一个 ChannelTest 的仓库。

Git克隆

上图中红框中是仓库的地址,我们通过可视化 git 界面这个仓库克隆到空的文件夹里。

Git文件提交

克隆后里面除了 .git 文件外没有其他文件,我们把自动化测试的脚本复制进来,然后在文件夹上右键-Git 提交-推送,Github 仓库里就会出现刚才提交的自动化测试脚本文件了。

然后,我们再把脚本集成到 Jenkins 本地服务上。

Jenkins集成

Jenkins 环境的搭建之前文章分享过:自动化测试-Jenkins本地服务环境搭建 ,这边文章用的 Jenkins war 包启动 Jenkins 服务的,每次都要 cmd 中输入命令才能启动服务。

其实还有一种启动方式,war 包启动是因为之前没有对 jenkins.msi 文件安装在本地,只是下载了 war 包,把 jenkins.msi 安装在本地,就不用每次都用命令启动了,jenkins.msi 安装包下载地址如下。

安装后直接打开默认的地址即可访问 Jenkins 了。

第一次需要安装插件之类的,这些步骤和上面文章的步骤一模一样的,请直接参照,这里不做赘述。

新建的 Jenkins 任务里我们把源码管理改成 Git,填入刚才的仓库地址。

 

构建命令中输入执行命令,先执行拉取最新代码的操作,再通过命令启动appium服务,最后执行自动化测试代码。

当然你还可以设置定时操作,参考上面那篇文章。

本文只是拿渠道包的自动化验证举例,当然,这个思路同样适用于冒烟测试和回归测试,修改相应的脚本即可。

 

文章为pk哥原创,我在我的公众号: Python 知识圈 上会分享更多心得体会,你也可以关注。

***版权申明:本文为 Python知识圈 pyzhishiquan.com 原创,没有Python知识圈书面授权,请勿以任何形式转载,摘编,复制或镜像。***

为您推荐

发表评论

电子邮件地址不会被公开。