zoukankan      html  css  js  c++  java
  • AutoMagic-开源自动化平台构建思路

    最近在github上看到AutoMagic自动化平台开源了,一时手痒,就试着搭了一套环境,现在把思路和大家说一说。

    AutoMagic从其工作分工分两部分:

     1Web端管理平台

    管理平台基于Python Django框架+Mysql开发,主要用来管理自动化测试用例和设计自动化测试场景、存放界面元素标识,通过界面录入存放在数据库中进行管理,它是一个纯粹基于Selenium关键字自动化原件管理平台。

    2:客户端执行脚本(seleniumkeyword)

    AutoMagic的执行效果展示主要靠它来体现,它的执行依附于web平台存储的用例和场景数据,seleniumkeyword可以不需要部署在服务器端,只要它能够连接到服务器端的数据库,部署在任何平台都可以执行。(方便分布式执行测试用例)

    2.1:客户端安装运行环境

    服务端:基于python,mysql-python,django环境下运行

    客户端:基于python、selenium、 mysqldb 环境下运行,其它依赖包和插件根据说明文档要求进行安装。

    2.2:客户端目录脚本说明

    TestSuite.py 测试用例执行脚本引擎是,它可以通过参数实现不同的执行方式

    -t [taskid] 指定执行的AutoMagic任务

    -u [userid] 指定执行脚本的用户

    -r [runid] 执行测试用例脚本要同步的TestRailRunid,它只有在执行 -t 参数时才会生效。

    -c [caseid] 指定要执行的单个用例的编号

    -p [projectid] 指定要执行的项目id,会依次执行项目中所有模块和用例状态是启用的所有用例

    -b [browser] 指定执行用例过程所使用浏览器,默认使用chrome浏览器,也可在执行case过程中通过openbrowser关键字重置

    示例:

    python TestSuite.py -t 1 -u tsbc  -b chrome

    zhufc用户在谷歌浏览器下启动id为1的测试任务

    Base.py 是我们关键字维护脚本,class Action中重定义了python selenium的一些方法,其它部分均为自定义关键字。

     龙渊阁测试开发家园: 317765580

    AddCase.py 同步用例到TestRail到脚本,并连接平台端的mysql数据库

    -t [taskid] 指定执行同步的AutoMagic任务

    -u [userid] 指定执行脚本的用户

    -s [sctionid] 执行同步case到TestRail的那个用例集(section_id代表所在用例集)

    HTMLTestRunner.py 生成报告的脚本文件

    RestApiUtil.pyRestApiUtil.py 是发包MW模拟安全事件和发送pcap发包接口

    testrail.py TestRail的接口API

    result目录为报告接口目录

    data目录执行上传附件关键字时,附件存放目录

    目录结构:

    生成测试报告效果:

    二:部署方案

    方案一 传统部署

    1:服务器端部署

    我是ubuntu环境,如果是centos环境,命令需要稍微调整、apt-get命令改成yum

    1.1:安装mysql服务

      apt-get install mysql-server

      apt-get install mysql-client

       sudo apt-get install libmysqlclient-dev

      netstat -tap | grep mysql检查是否安装成功

      mysql –uroot –pXXX 执行登录

    1.1:生成基础安装包

    在usr目录下新建python文件夹 :

      cd /usr

      mkdir python

      apt-get update

      apt-get install lrzsz

    执行rz命令,将本地压缩包拖到python文件夹下

    在主目录下执行 python setup.py sdist 生成安装包

      cd dist

      pip install automagic-0.1.tar.gz执行安装

    1.2:安装 django 依赖包 

             apt-get install python-dev  python基础依赖包

             apt-get install python-pip  安装pip

             pip install -U setuptools 升级setuptools

             pip install django==1.11.1 安装基础diango

             pip install MySQL-Python==1.2.3  安装mysql-python

        pip install django-users2==0.2.1 依赖包

             pip install django-cors-headers==2.0.2 依赖包

             pip install djangorestframework==3.6.3 依赖包

             pip install python-jenkins==0.4.14 依赖包

    1.3:安装seleniumkeyword依赖包

             pip install selenium 依赖包

             pip install requests 依赖包

             pip install paramiko==2.1.2  依赖包

             pip install scapy==2.3.3  依赖包

    1.4:异常处理

    如果在apt-get install过程中出现404,那么执行apt-get update进行源升级

    如果进程中出现E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?那么查看apt-get 进程,全部杀掉

      ps -A | grep apt

      sudo kill -9 XXX

    进程中报mysql—config和libmysqlclient.so.18无法定位到,那么配置软链接

    ln -s /usr/local/mysql/bin/mysql_config /usr/local/bin/mysql_config 

    ln-s/usr/local/mysql/lib/libmysqlclient.so.18/usr/lib/libmysqlclient.so.18

    1:5:配置mysql连接

             Cd /usr/python/automagic-dev/automated

        Vi setting.py

             修改数据库配置文件

    Ps:这里的NAME是库名,需要在数据库中真实存在

    1.6:mysql用户组ip分配

             /usr/local/mysql/bin/mysql -uroot -pXXXXX

             grant all privileges  on *.* to root@'%' identified by "XXXXX";

             FLUSH PRIVILEGES;

    1.7:数据库初始化

             cd automagic-dev

             python manage.py makemigrations

        python manage.py migrate

    1.8:创建管理员

             python manage.py createsuperuser

      按照提示进行输入要创建的用户名、邮箱、密码(8位以上,字母、字符、数字的组合)

    1.9:启动服务

      python manage.py runserver 0.0.0.0:8080

      虚拟机执行:本机host:8080 访问平台

    2:pc端部署

           2.1:安装python2.7
           2.2:安装setuptooles
           2.3:pip install selenium
           2.4:pip install  MySQL_python‑1.2.5‑cp27‑none‑win_amd64.whl
      2.5:pip install mysql-python
      2.6:配置mysqldb

    方案二 docker环境部署

    Automagic平台我已经进行了容器化,因此只需要在本地安装docker工具,即可下载镜像部署

    1:服务器下安装docker

      sudo apt-get update

      sudo apt-get install docker

    2:下载镜像(镜像暂未公开,需要的加群获取)

      registry.cn-hangzhou.aliyuncs.com/zhufc/automagic:django-automagic

    3:基于镜像构建容器

      docker run -d --name automagic -p 4406:3306 -p 8080:8080 registry.cn-hangzhou.aliyuncs.com/zhufc/automagic:django-automagic

      3306数据库端口映射到4406;8080容器端口映射到虚拟机8080上,让外部访问

    4:进入容器

      Docker ps –a 查看容器id

      Docker exec –it d39c6648ebb0 bash 进入容器内部

    5:进入automagic目录下启动自动化平台

      Cd /usr/python/automagic-dev

      Python manage.py runserver 0.0.0.0:8080 启动服务

    出现端口正在使用,表示服务已经伴随容器自启动了,直接去平台用虚拟机ip访问即可

    执行 ctrl+p+q ,退出但不停止容器

    查看虚拟机ipifconfig

    6:页面执行 localhost:8080启动服务。

    7:注意事项

    我的docker容器下已经部署了mysql服务并配置了跟随容器自启动,无需重启mysql。

    三:平台基本使用

    1:创建产品

    2:点击产品名称,创建项目

    3:点击项目名称创建模块

    4:点击用户管理下的关联产品,将产品与用户挂钩

    5:功能测试下添加关键词

    关键词来源在seleniumkeyword下,也可以重定义。

     

    6:添加用例,填写关键词,定位元素或者输入文本

    7:填写定位方式和定位标识

    8:创建任务,勾选用例

    9:seleniumkeyword目录下执行脚本命令 ,注意任务编号

    python TestSuite.py -t 2 -u zhufc -b chrome  意思是在谷歌浏览器下执行任务编号2

    10:查看运行结果

    11:在用例下查看详情可以看到详细的运行过程和debug日志

    12:在result目录下可以查看详细的运行报告和日志文件

    注:部署过程中会涉及到一些第三方包和异常的处理,如果有需要帮助的请联系我!

     获取更详细资料,加入我们吧!QQ群:317765580

  • 相关阅读:
    Oracle 按一行里某个字段里的值分割成多行进行展示
    Property or method "openPageOffice" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by
    SpringBoot 项目启动 Failed to convert value of type 'java.lang.String' to required type 'cn.com.goldenwater.dcproj.dao.TacPageOfficePblmListDao';
    Maven 设置阿里镜像
    JS 日期格式化,留作参考
    JS 过滤数组里对象的某个属性
    原生JS实现简单富文本编辑器2
    Chrome控制台使用详解
    android权限(permission)大全
    不借助第三方网站四步实现手机网站转安卓APP
  • 原文地址:https://www.cnblogs.com/Zfc-Cjk/p/8974228.html
Copyright © 2011-2022 走看看