AutoMagic-开源自动化平台构建思路
最近在github上看到AutoMagic自动化平台开源了,一时手痒,就试着搭了一套环境,现在把思路和大家说一说。
AutoMagic从其工作分工分两部分:
1:Web端管理平台
管理平台基于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的一些方法,其它部分均为自定义关键字。
AddCase.py 同步用例到TestRail到脚本,并连接平台端的mysql数据库
-t [taskid] 指定执行同步的AutoMagic任务
-u [userid] 指定执行脚本的用户
-s [sctionid] 执行同步case到TestRail的那个用例集(section_id代表所在用例集)
HTMLTestRunner.py 生成报告的脚本文件
RestApiUtil.py、RestApiUtil.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 isntall 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目录下可以查看详细的运行报告和日志文件
注:部署过程中会涉及到一些第三方包和异常的处理,如果有需要帮助的请联系我!
AutoMagic-开源自动化平台构建思路的更多相关文章
- 我发起了一个 用 物理服务器 和 .Net 平台 构建云平台 的 .Net 开源项目
大家好 , 我发起了一个 用 物理服务器 和 .Net 平台 构建云平台 的 .Net 开源项目 . 对 , 用 物理服务器 和 .Net 平台 构建 云平台 . 通过 .Net 构建 分布式 计算集 ...
- 开源运维自动化平台-opendevops
开源运维自动化平台-opendevops 简介 官网 | Github| 在线体验 CODO是一款为用户提供企业多混合云.自动化运维.完全开源的云管理平台. CODO前端基于Vue iview开发. ...
- TurtleBot 3 & 2i ROS开源实验平台
TurtleBot 3 & 2i ROS开源实验平台,全球更受欢迎的ROS平台. TurtleBot是ROS标准平台机器人,在全球开发人员和学生中深受欢迎.其有3个版本: TurtleBot1 ...
- Unity跨平台C/CPP动态库编译---可靠UDP网络库kcp基于CMake的各平台构建实践
1.为什么需要动态库 a)提供原生代码(native code)的支持,也叫原生插件,但是我实践的是c/cpp跨平台动态库,这里不具体涉及安卓平台java库和ios平台的objectc库构建. b)某 ...
- 【物联网】 9个顶级开发IoT项目的开源物联网平台(转)
物联网(IoT)是帮助人工智能(AI)以更好的方式控制和理解事物的未来技术. 我们收集了一些最有名的物联网平台,帮助您以受控方式开发物联网项目. 物联网平台是帮助设置和管理互联网连接设备的组件套件. ...
- 9个顶级开发IoT项目的开源物联网平台
https://blog.csdn.net/shnbiot/article/details/80432017 物联网(IoT)是帮助人工智能(AI)以更好的方式控制和理解事物的未来技术. 我们收集了一 ...
- flynn 开源paas 平台安装试用
flynn 是一个不错的开源paas 平台,基于git 以及容器技术,开发模型与 heroku 基本一样,同时构建方式就是基于heroku 的buildpacks 安装 官方文档提示说明是ubuntu ...
- Unity3D跨平台动态库编译---记kcp基于CMake的各平台构建实践
一 为什么需要动态库 1)提供原生代码(native code)的支持,也叫原生插件,但是我实践的是c/cpp跨平台动态库,这里不具体涉及安卓平台java库和ios平台的objectc库构建. 2)某 ...
- 开源映射平台Mapzen加入了Linux基金会的项目
2019年1月29日,Linux基金会宣布,开源映射平台Mapzen现在是Linux基金会项目的一部分. Mapzen专注于地图显示的核心组件,如搜索和导航.它为开发人员提供了易于访问的开放软件和数据 ...
随机推荐
- idea中使用svn,忽略本地修改的指定的文件
1.打开version control 2.可以查看目前忽略的文件 3.配置要忽略的文件 4.可以用通配符忽略匹配的文件 还有第二种方法,那就是: 在svn提交的界面,如果是没有加入到version- ...
- CSS优先级和定位
overflow属性 hidden scroll auto hidden 超出隐藏 scroll 滚动条 Auto 自动 display属性 block inline inline-block non ...
- Hibernate(五):Hibernate配置文件及C3P0的用法
配置文件可配项: 参考文档:hibernate-release-5.2.9.Final/documentation/userguide/html_single/Hibernate_User_Guide ...
- hdu1443 Joseph---约瑟夫环
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1443 题目大意: 一共有2k个人,分别为k个好人和k个坏人,现在我们需要每隔m个人把坏人挑出来,但是 ...
- drupal8主题安装
一.在网站上下载一个主题包 在 https://www.drupal.org/project/bootstrap 下下载的bootstrop主题 二.下载之后,解压放在d8game/themes目录下 ...
- [LeetCode] Prime Number of Set Bits in Binary Representation 二进制表示中的非零位个数为质数
Given two integers L and R, find the count of numbers in the range [L, R] (inclusive) having a prime ...
- mybatis学习一
1:ORM概念 ORM(OBJECT-RELATIONSHIP MAPPING) 即对象关系映射,是一种思想,实质是将数据库中的数据用对象的形式表现出来 JPA(JAVA PERSISIT ...
- [JSOI2007]合金
Description 某公司加工一种由铁.铝.锡组成的合金.他们的工作很简单.首先进口一些铁铝锡合金原材料,不同种类的 原材料中铁铝锡的比重不同.然后,将每种原材料取出一定量,经过融解.混合,得到新 ...
- [BZOJ1977]严格次小生成树
[问题描述] 小C最近学了很多最小生成树的算法,Prim算法.Kurskal算法.消圈算法等等. 正当小C洋洋得意之时,小P又来泼小C冷水了.小P说,让小C求出一个无向图的次小生成树,而且这个次小生成 ...
- [Codeforces]856D - Masha and Cactus
题目大意:给出一棵树和若干条可以加入的边,要求加入若干条边使图是仙人掌并且加入的边权和最大,仙人掌定义为没有一个点属于超过1个环.(n,m<=200,000) 做法:这题的仙人掌跟平时见到的不太 ...