1. 简介
按照上一篇的计划, 今天给小伙伴们分享执行测试用例, 生成测试报告, 以及自动化平台. 今天这篇分享讲解完. Appium 自动化测试框架就要告一段落了.
2. 执行测试用例 & 报告生成
测试报告, 宏哥已经讲解了 testng,htmlTestRunner,allure 等等, 今天就在讲解一个新的测试报告 BSTestRunner. 这个有的小伙伴有问到, 所以在这里特地的给这部分的小伙伴们演示一下.
2.1 下载 BSTestRunner
直接输入网址, 下载后, 引入项目中即可.
BSTestRunner 下载地址 https://github.com/easonhan007/HTMLTestRunner
关于这部分可以看宏哥的一个实例: demo
2.2 run.py
执行所有测试用例. 这个是所有框架的入口.
2.3 参考代码
- # coding=utf-8
- # 1. 先设置编码, utf-8 可支持中英文, 如上, 一般放在第一行
- # 2. 注释: 包括记录创建时间, 创建人, 项目名称.
- '''
- Created on 2019-11-21
- @author: 北京 - 宏哥 QQ 交流群: 707699217
- Project:Appium 自动化测试框架综合实践 - 寿终正寝完结篇
- '''
- # 3. 导入模块
- import unittest
- from BSTestRunner import BSTestRunner
- import time,logging
- import sys
- path='D:\\kyb_testProject\\'
- sys.path.append(path)
- test_dir='../test_case'
- report_dir='../reports'
- discover=unittest.defaultTestLoader.discover(test_dir,pattern='test_login.py')
- now=time.strftime('%Y-%m-%d %H_%M_%S')
- report_name=report_dir+'/'+now+'test_report.html'
- with open(report_name,'wb') as f:
- runner=BSTestRunner(stream=f,title='Kyb Test Report',description='kyb Android app test report')
- logging.info('start run test case...')
- runner.run(discover)
注意:
pattern 参数可以控制运行不同模块的用例, 如下所示表示运行指定路径以 test 开头的模块
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')
3.Bat 批处理执行测试
前面脚本开发阶段我们都是使用 pycharm IDE 工具来运行脚本, 但是当我们的脚本开发完成后, 还每次打开 IDE 来执行自动化测试就不合理了, 因为不仅每次打开比较麻烦, 而且 pycharm 内存资源占用比较 "感人"! 这样非常影响执行效率. 针对这种情况, 我们可以使用 cmd 命令或者封装为 bat 批处理脚本来运行.
3.1 启动 appium 服务
启动 appium 服务通过批量处理脚本.
3.1.1start_appium.bat
3.1.2 参考代码
- @echo off
- appium
- pause
@echo off 为关闭 "回显", 让命令行界面显得整洁一些.
3.2 执行测试用例
执行测试用例就是说到底就是通过批量脚本执行框架入口文件 run.py.
3.2.1run.bat
3.2.2 参考代码
- @echo off
- d:
- cd D:\kyb_testProject\test_run
C:\Python35\python.exe run.py
pause
3.3 注意事项:
3.3.1 执行之前需要在 run.py 脚本添加如下内容:
- import sys
- path='D:\\kyb_testProject\\'
- sys.path.append(path)
项目在 IDE(Pycharm)中运行和我们在 cmd 中运行的路径是不一样的, 在 pycharm 中运行时, 会默认 pycharm 的目录 + 我们的工程所在目录为运行目录.
而在 cmd 中运行时, 会以我们的工程目录所在目录来运行. 在 import 包时会首先从 pythonPATH 的环境变量中来查看包, 如果没有你的 PYTHONPATH 中所包含的目录没有工程目录的根目录, 那么你在导入不是同一个目录下的其他工程中的包时会出现 import 错误.
3.3.2. 以上脚本编码格式必须为 utf-8
4. 自动化测试平台
前面我们已经开发完测试脚本, 也使用 bat 批处理来封装了启动 Appium 服务和运行测试用例. 但是还是不够自动化, 比如我想每天下班时自动跑一下用例, 或者当研发打了新包后自动开始运行测试脚本测试新包, 那么该如实现呢?
4.1 持续集成(Continuous integration)
持续集成是一种软件开发实践, 即团队开发成员经常集成他们的工作, 通过每个成员每天至少集成一次, 也就意味着每天可能会发生多次集成, 简称 CI. 每次集成都通过自动化的构建 (包括编译, 发布, 自动化测试) 来验证, 从而尽早地发现集成错误.
4.2Jenkins 简介
Jenkins 是一个开源软件项目, 是基于 Java 开发的一种持续集成工具, 用于监控持续重复的工作, 旨在提供一个开放易用的软件平台, 使软件的持续集成变成可能.
4.3 下载与安装
下载地址: https://jenkins.io/download/
下载后安装到指定的路径即可, 默认启动页面为 localhots:8080, 如果 8080 端口被占用无法打开, 可以进入到 jenkins 安装目录, 找到 jenkins.xml 配置文件打开, 修改如下代码的端口号即可.
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>
4.4 构建触发器
触发远程构建: 如果您想通过访问一个特殊的预定义 URL 来触发新构建, 请启用此选项.
Build after other projects are built: 在其他项目触发的时候触发, 里面有分为三种情况, 也就是其他项目构建成功, 失败, 或者不稳定的时候触发项目;
Build periodically 定时构建
GitHub hook trigger for GITScm polling, 根源 Git 的源码更新来触发构建
Poll SCM: 定时检查源码变更(根据 SCM 软件的版本号), 如果有更新就 checkout 最新 code 下来, 然后执行构建动作. 如下图配置:
*/5 * * * * (每 5 分钟检查一次源码变化)
4.5jenkins 定时构建语法
这是其实就是 corn 表达式, 几分钟就可以掌握, 有兴趣的可以百度一下, 花费几分钟简单的学习一下.
- * * * * *
- (五颗星, 中间用空格隔开)
第一个 * 表示分钟, 取值 0~59
第二个 * 表示小时, 取值 0~23
第三个 * 表示一个月的第几天, 取值 1~31
第四个 * 表示第几月, 取值 1~12
第五个 * 表示一周中的第几天, 取值 0~7, 其中 0 和 7 代表的都是周日
4.6 使用案例
每天下午下班前 18 点定时构建一次
0 18 * * *
每天早上 8 点构建一次
0 8 * * *
每 30 分钟构建一次:
H/30 * * * *
注意: 关于 jenkins 的详细知识, 可以看宏哥的: jenkins 系列文章.
5. 小结
到此, Appium 自动化测试框架就全部完成了, 聪明的你都懂了吗??? 框架自己搭建起来吗??? 嘿嘿! 慢慢地来吧.
来源: https://www.cnblogs.com/du-hong/p/11496621.html