Appium 好看的自动化测试报告,平台版本

文贤平 · 2018年07月26日 · 最后由 淳罡 回复于 2018年12月07日 · 11935 次阅读

aotu_ui 是一个集成自动化测试报告 Python 开发 web 版本,他不仅有这个漂亮的外观,还有强大的功能,集成了 ui,接口测试报告,使用简单,快速上手

项目地址,觉得好用的帮忙点个小✨✨

项目依赖

  • Python 版本 2.7.10-2.7.14
  • django 版本 1.11 以上
  • redis 最新版本(可以不安装)
  • djangorestframework 3.8.2 以上
  • mysql 5.7

项目开始

  • 安装依赖,项目根目录执行命令 pip install -r requirements.txt
  • mysql 建表,并设置为 utf-8 create database auto_ui DEFAULT CHARACTER set utf8;
  • 根目录创建执行合表,全部 ok 表示成功 python manage.py migrate
  • 建连接 db 的配置文件

    # config_auto_ui.yaml
    ---
    db:
    ip: localhost
    port: 3306
    table: auto_ui
    uname: root
    passwd: 123456
    
    
  • 设置文件访问路径 auto_ui--Config.py 文件修改路径

    if platform.system() == "Windows":
        path = os.path.join('d:\config_auto_ui.yaml')
    else:
        path = os.path.join('/usr/local/aotuConfig/config_auto_ui.yaml')
    f = open(path)
    s = yaml.load(f)
    f.close()
    return s
    
  • 启动 auto_ui, 允许外网访问

    python manage.py runserver 0.0.0.0:8000
    

    如何对接 appium 或者接口测试结果报告

  • 先来看看数据库的字段, 只要在每条用例跑完后将对应字段结果入库即可,
    需注意是 ReportDetail 和 ReportInfo 为 uuid 关联,每次运行跑脚本需要生成一个全局的 uuid

    global uuid
    uuid = uuid.uuid1()  # 生成全局唯一id
    
    # ReportDetail 对应字段
    precondition = models.CharField("前置条件", max_length=255, default=None)
    case_name = models.CharField("case名称", max_length=128, default=None)
    check_step = models.CharField("检查步骤", max_length=128, default=None)
    title = models.CharField("用例标题", max_length=64, default=None)
    step = models.TextField("测试步骤", max_length=2048, default=None)
    phone_name = models.CharField("机型", max_length=64, default=None)
    result = models.ImageField("测试结果", default=0)
    screenshots_path = models.ImageField("测试图片,传入图片路径即可", upload_to='upload', default=None)
    msg = models.TextField("失败原因", max_length=1024, default=None)
    case_id = models.CharField("case_id", max_length=64, default=None)
    report_uuid = models.CharField("每次运行唯一md5标识", max_length=256, default=None)
    report_create_time = models.DateTimeField("创建时间", auto_now=False, auto_now_add=True)
    report_update_time = models.DateTimeField("更新时间", auto_now=True, auto_now_add=False)
    platform_name = models.TextField("系统类型", max_length=16, default="android")
    case_step_time = models.TextField("测试步长,json格式", max_length=2048, default=None)
    
    # ReportInfo 对应字段
    case_sum = models.IntegerField("case总和", default=0)
    case_pass_sum = models.IntegerField("通过case总和", default=0)
    case_fail_sum = models.IntegerField("失败case总和",  default=0)
    case_date = models.DateTimeField("测试日期", auto_now=False, auto_now_add=True)
    case_run_time = models.CharField("测试总耗时", max_length=64, default="0")
    platform_name = models.TextField("系统类型", max_length=16, default="android")
    platform_env = models.TextField("运行环境", max_length=16, default="stage")
    report_uuid = models.CharField("每次运行唯一md5标识", max_length=256, default=None)
    report_info_create_time = models.DateTimeField("创建时间", auto_now=False, auto_now_add=True)
    report_info_update_time = models.DateTimeField("更新时间", auto_now=True, auto_now_add=False)
    

    功能

  • 所有的自动化统计报表,囊括所有的脚本运行的历史数据和进 7 天的脚本成功率趋势

  • 单次自动化统计报表,统计了单次运行脚本的详细信息,分为失败统计和全部统计和日志复盘信息

  • 单条自动化统计报表,单条用例的详细信息,包括检查点,执行步骤,

共收到 41 条回复 时间 点赞

很不错啊~,报告也很漂亮。跟 appium 测试如何结合的有案例吗?

报告很好看,但跟楼上有同一个问题,这个项目怎样放到 appium 的测试项目里呢?或者说这个项目的功能仅仅是展示报告还是说跟 HTMLTestRunner 一样的功能呢?

不错不错 adbui 终于有更新了

你这个是做了 UI 自动化的平台吗

能把 auto 拼成 aotu 的……

对 槽神 回复

已全部修改了好了

对 pan 回复

目前只上了一个测试报告版块,其他的版块有还没有剥离敏感功能,过段时间会开源,和 HTMLTestRunner 区别是这个是可追溯,有历史数据,可扩展性强。

对 枫叶 回复

嗯,已经是平台化了,这个开源了一部分

对 雨夜狂奔 回复

已经更新对接方法😃

对 文贤平 回复

很不错的平台,我也在研究,期待完全开源😎

对 文贤平 回复

期待开源呀,我目前也在整移动端 UI 自动化平台的一些东西,不过遇到一些问题不知道怎么处理,不知道能不能加个 QQ 咨询咨询😆

很不错哦,很漂亮

来年的规划也有这个 Report Center, 但是我们期望是多个项目的 Report 一个平台展示。

对 米阳MeYoung 回复

测试报告统一放到一个平台感觉还是有必要的,便于展示,能直观部门的绩效和成果,以及所有的问题统计(包括脚本的稳定性),目前我们还只有 ui 和 interface 的,后续考虑会将我厂的代码构建和 sonar 一起集成进来😃

很赞

对 文贤平 回复

对的。 我们也是这么打算。 所以叫 Report Center 。 这里就涉及三大块,1 如何在尽可能不修改源码的情况下生成你需要的 Report 数据。 2. 如何把各个平台的数据实时收集 3. 就是解析展示了。

mark,目前在用 Java 做一套类型的自动化平台,还在进行中。期待楼主的项目早日脱敏完全开源,学习下思路。

仅楼主可见

报告挺漂亮的,不考虑兼容 Python3 吗?

python2 就要淘汰了,怎么还不兼容 Python3

对 究客 回复

那接口数据举例子吧,比如有串接口 a,d,b,假设对应的时长为 1,2,3,那么存入的 json 格式就是{"a":1, "b":2,"c":3}

对 iBatigoal 回复

还在用 2 的人瑟瑟发抖,python3 应该也可,里面没啥语法冲突的

对 文贤平 回复

多谢

根目录创建执行合表,全部 ok 表示成功 python manage.py migrate
这里的根目录指的是哪个?当前用户的根目录?

对 Aliguagua 回复

日志截全一点,关键的没截取到,根目录就是你 clone 项目进去的目录

wenxianpingdeMacBook-Pro:auto_ui wenxianping$ ls
README.md       manage.py       setting
auto_ui         report          uml
home            requirements.txt
27楼 已删除
对 文贤平 回复

命令行运行 python manage.py migrate 出错。错误提示如上面截图

对 Aliguagua 回复
# config_auto_ui.yaml
---
db:
ip: localhost
port: 3306
table: auto_ui
uname: root
passwd: 123456

这个配置文件的名字注意一下,和这里面的一样

对 文贤平 回复

/usr/local/autoConfig/config_auto_ui.yaml
下面查看 config_auto_ui.yaml 的内容

对 Aliguagua 回复

你调试一下,y 的值应该是 nulll,才报这个错,看看是不是没读到这个配置文件

哥们 我自己写一个这样子平台出来大概要多久啊?

对 wtnhz 回复

兄 die,这个不好说了,你自己应该知道要多久的,我又不知道你技术功底和思路什么,没法说

你好,我项目启动后,打开连接提示这个,这个要配置 redies 吗

我把 settings 的缓存注释掉了,嘻嘻

数据量不大的时候是用不着这个缓存的,注释不影响哈

报表是用哪个模板的哇,这个是 adminLTE 吗

对 程明远 回复

应该不是

想问几下,case 运行情况的柱状图,数据怎么渲染的,貌似不是模板写法了

对 淳罡 回复

路径:/report/views.py

路径:auto_ui/home/static/build/js/custom.js

很细心的一个小伙子,其实是 django 里面写了个接口,然后用 js 去调这个接口拿数据,然后再由 js 去渲染的

对 文贤平 回复

好的,谢了,找到了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册。