背景
- HttpRunner是一个接口自动测试的框架,利用json/yaml格式文件配置测试用例
- HttpRunner Manager是一个基于WebUI的测试用例管理工具,是基于python的
- erlang是一种通用的面向并发的编程语言,目的是创造一种可以应对大规模并发活动的编程语言和运行环境
- RabbitMQ是一个由Erlang语言开发的AMQP(高级消息队列协议)的开源实现,它支持多个消息传递协议。RabbitMQ可以部署在分布式和联合配置中,以满足高规模、高可用性的需求,另外安装rabbitmq需要先安装erlang。
- Fiddler是一个接口抓包工具,可以直接通过Fiddler抓包后导出为测试用例使用
- mysql是免费的可搭建再linux上的数据库,主要用于承载HttpRunner Manager的仓库
资料
HttpRunner
HttpRunner Manager
- 搭建教程:https://www.cnblogs.com/nothingc/p/12067829.html
- 源码:https://github.com/HttpRunner/HttpRunnerManager
Mysql
- 安装教程:https://blog.csdn.net/james_nan/article/details/82053430
- 配置环境教程:https://www.cnblogs.com/roboot/p/10647609.html
Fiddler
环境搭建
HttpRunner
windows
安装python环境
依次执行如下命令
1
2
3
4
5pip install httprunner
pip install har2case
httprunner -V
har2case -V使用
先用fiddler抓取需要测试的接口,而后将其导出为.har格式的文件(此处假设为devin.har)
依次执行如下命令:
1
2
3
4生成一个json文件
har2case devin.har
在生成的json文件基础上生成一个yaml格式文件,此处假设为devin.yml
har2case devin.har -2y执行生成的测试用例
1
hrun devin.yml
linux
安装命令同windows下安装和使用方式
HttpRunner Manager
window
下载源码,同时要确保安装好了mysql环境
下载解压后,HttpRunner Manager 中的settings.py文件的数据库信息直接更改配置就好了,尽量数据库用root,这样后期不容易出现权限问题,具体如下(红色字体的内容都是需要根据实际的信息来进行填写,确认自己要用的数据库):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25if DEBUG:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'qa-httpRunner', # 新建数据库名
'USER': 'root', # 数据库登录名
'PASSWORD': 'password', # 数据库登录密码
'HOST': 'ip', # 数据库所在服务器ip地址
'PORT': '3306', # 监听端口 默认3306即可
}
}
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'), # 静态文件额外目录
)
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'qa-httpRunner', # 新建数据库名
'USER': 'root', # 数据库登录名
'PASSWORD': 'password', # 数据库登录密码
'HOST': 'ip', # 数据库所在服务器ip地址
'PORT': '3306', # 监听端口 默认3306即可
}
}同时还需要修改通知的邮箱信息, 也位于settings.py文件
1
2EMAIL_SEND_USERNAME = '' # 定时任务报告发送邮箱,支持163,qq,sina,企业qq邮箱等,注意需要开通smtp服务
EMAIL_SEND_PASSWORD = '' # 邮箱密码如若安装Erlang、RabbitMQ,则还需要配置如下内容,其也位于settings.py文件中
1
2
3
4
5
6
7
8
9
10
11
12
13
14djcelery.setup_loader()
CELERY_ENABLE_UTC = True
CELERY_TIMEZONE = 'Asia/Shanghai'
# 127.0.0.1即为rabbitmq-server所在服务器ip地址
BROKER_URL = 'amqp://guest:guest@127.0.0.1:5672//' if DEBUG else 'amqp://guest:guest@127.0.0.1:5672//'
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_RESULT_EXPIRES = 7200 # celery任务执行结果的超时时间,
CELERYD_CONCURRENCY = 1 if DEBUG else 10 # celery worker的并发数 也是命令行-c指定的数目 根据服务器配置实际更改 一般25即可
CELERYD_MAX_TASKS_PER_CHILD = 100 # 每个worker执行了多少任务就会死掉,我建议数量可以大一些,比如200HttpRunner Manager项目下载本地之后,会发现项目根目录下有个文件叫requirements.txt,这个文件里面都是项目所需要的一些外部依赖包,如果使用PyCharm或者Idea应该直接可以自动导入安装这些包,如果自动安装失败,可以使用pip install自定安装。下面是我的requirements.txt文件的截图,需要注意的是,如果需要的一些包你已经安装了但是和文件中要求的版本不同,可以直接把requirements.txt文件中的版本改成你所装的版本
1
pip install -r requirements.txt
此时进入mysql创建刚刚配置的数据库名
1
create database qa-httpRunner character set=utf8
这个时候就可以生成数据库迁移脚本了,命令如下:python manage.py makemigrations ApiManager;
1
python manage.py makemigrations ApiManager
生成之后执行命令:python manage.py migrate用来生成数据库表结构
1
python manage.py migrate
执行python manage.py runserver 0.0.0.0:8001,后面这个端口号也是自己酌情使用,没有被占用的端口就行,启动成功会出现如下信息:
之后打开本地链接http://127.0.0.1:8001/api/login/,进行注册登录,平台就算搭建好了,可以根据这个项目进行我们的二次开发,接口自动化脚本编写之类的操作了:
然后创建后台管理平台的超级管理员权限:python manage.py createsuperuser,打开链接127.0.0.1:8001/admin/来访问HttpRunner Manager的运维管理系统
创建用户并进入后台管理页面后,会被提示百度api未授权,此时需要到【百度开放者平台】创建一个app(类型未浏览器端),申请一个key即可
然后修改引用位置:HttpRunnerManager/templates/index.html 第39 行中ak后面的值即可
1
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=ZUONbpqGBsYGXNIYHicvbAbM"></script>
此时创建应用,发现页面样式丢失,这是因为有一个样式文件无法正常引入,如下所示:
此时修改templates文件夹下base.html文件中amazeui.min.js的引用位置为如下(也可以直接将文件下载放在本地更直接):
修改文件: HttpRunnerManager/templates/base.html
1
https://cdnjs.cloudflare.com/ajax/libs/amazeui/2.7.2/css/amazeui.min.css
同时为了能够正常打开【任务监控】模块,也需要修改templates文件夹下base.html文件中任务监控的链接
由于该模块使用的时【Flower】(此前已在requirements中安装),其默认使用的5555端口,在使用之前需要打开Flower服务,并开放5555端口,windows开放端口我还是不是特别了解
linux
拉HttpRunner Manager的源码
1
2wget https://github.com/httprunner/HttpRunnerManager/archive/master.zip
unzip master.zip其它指令参见windows环境安装
关于flower在linux上的配置(目前版本不兼容),如下:
1
2
3flower
sudo iptables -I INPUT -p tcp --dport 5555 -j ACCEPT
sudo iptables-save
Mysql安装
windows
下载安装包
下载可执行程序,直接安装即可
linux
依次执行如下命令
1
2
3sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev执行完成后,登录一下看看是否可以正常登录
1
mysql -uroot -p
使用注意事项:
创建数据库的时候有时候会产生因为编码问题导致的中文不兼容,因此推荐每次创建数据的时候都加上character set=utf8
1
create database HttpRunner character set=utf8
提供数据库重启命令
1
service mysql restart
Fiddler
安装事项
- 安装教程:下载安装包后直接安装即可
- 使用教程:【File】文件夹的【Fiddler教程】、【Postman】使用教程
- 安装包:已经上传至自己的网盘
- 插件:jmeter导出插件已上传至自己网盘
配置事项
将解压出来的两个插件复制到Fiddler安装路径下的【ImportExprt】文件中,然后重启Fiddler
导出时需按如下进行选择
erlang
常用命令
- **halt()**:退出erlang系统
- erl:进入erlang系统
windows
ERLANG环境变量配置,检查环境变量,若未配置则配置erl的环境变量,如下:
新建ERLANG_HOME
变量,值为1
C:\Program Files\erl10.1
在Path变量中添加
1
ERLANG_HOME%\sbin
linux
下载传送门:https://www.erlang-solutions.com/resources/download.html,执行如下命令
1
wget https://packages.erlang-solutions.com/erlang/debian/pool/esl-erlang_23.0.1-1~ubuntu~xenial_amd64.deb
尝试安装,以检测环境依赖是否缺乏,其结果肯定是缺少很多依赖
1
dpkg -i esl-erlang_23.0.1-1~ubuntu~xenial_amd64.deb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21root@ubuntu:/home/erlang# dpkg -i esl-erlang_21.0-1_ubuntu_artful_amd64.deb
Selecting previously unselected package esl-erlang.
(Reading database ... 60202 files and directories currently installed.)
Preparing to unpack esl-erlang_23.0.1-1~ubuntu~xenial_amd64.deb ...
Unpacking esl-erlang (1:21.0) ...
dpkg: dependency problems prevent configuration of esl-erlang:
esl-erlang depends on libwxbase2.8-0 | libwxbase3.0-0 | libwxbase3.0-0v5; however:
Package libwxbase2.8-0 is not installed.
Package libwxbase3.0-0 is not installed.
Package libwxbase3.0-0v5 is not installed.
esl-erlang depends on libwxgtk2.8-0 | libwxgtk3.0-0 | libwxgtk3.0-0v5; however:
Package libwxgtk2.8-0 is not installed.
Package libwxgtk3.0-0 is not installed.
Package libwxgtk3.0-0v5 is not installed.
esl-erlang depends on libsctp1; however:
Package libsctp1 is not installed.
dpkg: error processing package esl-erlang (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
esl-erlang解决依赖问题,安装它所描述的esl-erlang depends on libwxbase2.8-0 | libwxbase3.0-0 | libwxbase3.0-0v5中的包,此处安装最新的, 同时又会出现相关提示
1
apt-get install libwxbase3.0-0v5
1
2
3
4
5
6
7
8
9
10
11
12root@ubuntu:/home/erlang# apt-get install libwxbase3.0-0v5
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
esl-erlang : Depends: libwxgtk2.8-0 but it is not installable or
libwxgtk3.0-0 but it is not installable or
libwxgtk3.0-0v5 but it is not going to be installed
Depends: libsctp1 but it is not going to be installed
Recommends: erlang-mode but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).此时执行如下命令进行安装,请输入y以同意
1
apt-get -i install
然后开始安装erlang的包
1
dpkg -i esl-erlang_23.0.1-1~ubuntu~xenial_amd64.deb
安装完成后,检测安装是否成功,,执行如下命令可以进入erlang系统
1
erl
RabbitMQ
windows
将RabbitMQ安装在非默认的目录(C:\Program Files),因该目录包含有空格,可能会对RabbitMQ服务启用有影响,因此另选无空格的安装路径(如:E:\RabbitMQ)
RabbitMQ环境变量配置,检查环境变量,若未配置则配置RabbitMQ的环境变量,如下:
新建RABBITMQ_SERVER变量,值为:1
E:\RabbitMQ\rabbitmq_server-3.7.9
在Path变量中添加
1
RABBITMQ_SERVER%\bin
安装完成后,右键选择【RabbitMQ Service - start】,然后以管理员身份运行,之后可通过访问 http://localhost:15672 进行测试,默认登录账户为:guest / guest
(注意)以上若不能正常访问RabbitMQ界面,则需要首先启动其管理模块
确保已切换到RabbitMQ安装目录的sbin目录下,再使用操作命令
1
2
3
4
5
6开启RabbitMQ节点
rabbitmqctl start_app
开启RabbitMQ管理模块的插件,并配置到RabbitMQ节点上
rabbitmq-plugins enable rabbitmq_management
关闭RabbitMQ节点
rabbitmqctl stop此时,RabbitMQ管理模块的插件已经配置到RabbitMQ节点上, 再次回到浏览器中访问 http://localhost:15672 即可成功打开
linux
下载传送门:https://www.rabbitmq.com/install-debian.html#manual-installation
![](HttpRunner配置教程/FireShot Capture 002 - Installing on Debian and Ubuntu — RabbitMQ - www.rabbitmq.com.png)
依次执行如下命令
1
2wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.4/rabbitmq-server_3.8.4-1_all.deb
sudo dpkg -i rabbitmq-server_3.8.4-1_all.deb尝试安装的时候可能会出现缺少环境依赖的情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Selecting previously unselected package rabbitmq-server.
(Reading database ... 118797 files and directories currently installed.)
Preparing to unpack rabbitmq-server_3.8.4-1_all.deb ...
Unpacking rabbitmq-server (3.8.4-1) ...
dpkg: dependency problems prevent configuration of rabbitmq-server:
rabbitmq-server depends on socat; however:
Package socat is not installed.
dpkg: error processing package rabbitmq-server (--install):
dependency problems - leaving unconfigured
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for systemd (229-4ubuntu21.28) ...
Processing triggers for ureadahead (0.100.0-19.1) ...
Errors were encountered while processing:
rabbitmq-server尝试安装依赖环境
1
sudo apt-get install socat
环境安装完成后,再次执行命令安装rabbitmq-server
1
sudo dpkg -i rabbitmq-server_3.8.4-1_all.deb
安装完成后,查看是否安装成功
1
2
3
4
5
6
7
8启动rabbitmq服务
sudo service rabbitmq-server start
查看服务状态
sudo rabbitmqctl status
关闭rabbitmq服务
sudo service rabbitmq-server stop
重启服务
sudo service rabbitmq-server restart(选读)附常见的命令(其实咱们也用不到,默认的就可以了)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17启动rabbitmq服务
sudo service rabbitmq-server start
关闭rabbitmq服务
sudo service rabbitmq-server stop
重启服务
sudo service rabbitmq-server restart
sudo rabbitmqctl # 查看所有命令和帮助文档
sudo rabbitmqctl stop # 停止服务
sudo rabbitmqctl status # 查看服务状态
sudo rabbitmqctl list_users # 查看当前所有用户
sudo rabbitmqctl list_user_permissions guest # 查看默认guest用户的权限
sudo rabbitmqctl delete_user guest # 删掉默认用户(由于RabbitMQ默认的账号用户名和密码都是guest。为了安全起见, 可以删掉默认用户)
sudo rabbitmqctl add_user username password # 添加新用户
sudo rabbitmqctl set_user_tags username administrator# 设置用户tag
sudo rabbitmqctl set_permissions -p / username ".*" ".*" ".*" # 赋予用户默认vhost的全部操作权限
sudo rabbitmqctl list_user_permissions username # 查看用户的权限
rabbitmqctl set_user_tags User Tag(选读)rabbitmq-server常用端口号
1
2
3
44369 -- erlang发现口
5672 --client端通信口
15672 -- 管理界面ui端口
25672 -- server间内部通信口