基于HttpRunner的接口自动化测试平台HttpRunnerManager

Posted lam7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于HttpRunner的接口自动化测试平台HttpRunnerManager相关的知识,希望对你有一定的参考价值。

https://github.com/HttpRunner/HttpRunnerManager

HttpRunnerManager

Design Philosophy

基于HttpRunner的接口自动化测试平台: HttpRunnerdjcelery and Django_. HttpRunner手册: http://cn.httprunner.org/

Key Features

  • 项目管理:新增项目、列表展示及相关操作,支持用例批量上传(标准化的HttpRunner json和yaml用例脚本)
  • 模块管理:为项目新增模块,用例和配置都归属于module,module和project支持同步和异步方式
  • 用例管理:分为添加config与test子功能,config定义全部变量和request等相关信息 request可以为公共参数和请求头,也可定义全部变量
  • 场景管理:可以动态加载可引用的用例,跨项目、跨模快,依赖用例列表支持拖拽排序和删除
  • 运行方式:可单个test,单个module,单个project,也可选择多个批量运行,支持自定义测试计划,运行时可以灵活选择配置和环境,
  • 分布执行:单个用例和批量执行结果会直接在前端展示,模块和项目执行可选择为同步或者异步方式,
  • 环境管理:可添加运行环境,运行用例时可以一键切换环境
  • 报告查看:所有异步执行的用例均可在线查看报告,可自主命名,为空默认时间戳保存,
  • 定时任务:可设置定时任务,遵循crontab表达式,可在线开启、关闭,完毕后支持邮件通知
  • 持续集成:jenkins对接,开发中。。。

对HttpRunnerManager的学习做个记录....环境部署均可在github中查看。记录部署中存在改动的地方。

本地开发环境部署

  • 安装mysql数据库服务端(推荐5.7+),并设置为utf-8编码,创建相应HttpRunner数据库,设置好相应用户名、密码,启动mysql

在MySQL安装目录的 bin 目录下执行命令:
mysqld --initialize --console
执行完成后,会打印 root 用户的初始默认密码,比如:

技术分享图片

2018-06-15T08:35:07.750836Z 0 [System] [MY-013169] [Server] G:Toolsmysqlmysql-8.0.11-winx64mysql-8.0.11-winx64inmysqld.exe (mysqld 8.0.11) initializing of server in progress as process 9716
2018-06-15T08:35:22.138130Z 5 [Note] [MY-010454] [Server] A temporary password is generated for [email protected]: Lf#HW/=jZ1g:
2018-06-15T08:35:30.402889Z 0 [System] [MY-013170] [Server] G:Toolsmysqlmysql-8.0.11-winx64mysql-8.0.11-winx64inmysqld.exe (mysqld 8.0.11) initializing of server has completed

注意!执行输出结果里面有一段: [Note] [MY-010454] [Server] A temporary password is generated for [email protected]: rI5rvf5x5G,E 其中[email protected]:后面的“rI5rvf5x5G,E”就是初始密码(不含首位空格)。在没有更改密码前,需要记住这个密码,后续登录需要用到。
要是你手贱,关快了,或者没记住,那也没事,删掉初始化的 datadir 目录,再执行一遍初始化命令,又会重新生成的。当然,也可以使用安全工具,强制改密码,用什么方法,自己随意。

 

在MySQL安装目录的 bin 目录下执行命令:
mysqld --install [服务名]
后面的服务名可以不写,默认的名字为 mysql。当然,如果你的电脑上需要安装多个MySQL服务,就可以用不同的名字区分了,比如 mysql5 和 mysql8。
安装完成之后,就可以通过命令net start mysql启动MySQL的服务了。通过命令net stop mysql停止服务。通过命令sc delete MySQL/mysqld -remove卸载 MySQL 服务

技术分享图片技术分享图片

 

在MySQL安装目录的 bin 目录下执行命令:
mysql -u root -p
这时候会提示输入密码,记住了上面第3.1步安装时的密码,填入即可登录成功,进入MySQL命令模式

技术分享图片

在MySQL中执行命令:
ALTER USER ‘root‘@‘localhost‘ IDENTIFIED WITH mysql_native_password BY ‘新密码‘;
修改密码,注意命令尾的;一定要有,这是mysql的语法

 

到此,安装部署就完成了。官方说测试速度MySQL8比5快两倍

技术分享图片

技术分享图片


mysql> select user,host,authentication_string from mysql.user;
+------------------+-----------+-------------------------------------------+
| user | host | authentication_string |
+------------------+-----------+-------------------------------------------+
| mysql.infoschema | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------------------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)


管理员root的host是localhost,代表仅限localhost登录访问。如果要允许开放其他ip登录,则需要添加新的host。如果要允许所有ip访问,可以直接修改成“%”

创建用户:

CREATE USER ‘lamw‘@‘%‘ IDENTIFIED WITH mysql_native_password BY ‘[email protected]#‘;

#(需要注意:mysql8.0加密方式修改了)
#检查用户

select user, host, plugin, authentication_string from userG;

授权远程数据库

#授权所有权限
GRANT ALL PRIVILEGES ON *.* TO ‘xxh‘@‘%‘;
#授权基本的查询修改权限,按需求设置
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON *.* TO ‘xxh‘@‘%‘;

查看用户权限
show grants for ‘xxh‘@‘%‘;


例如:新建用户

CREATE USER ‘lamw‘@‘%‘ IDENTIFIED WITH mysql_native_password BY ‘123456‘;

技术分享图片

 

 

登录的时候 ip地址用localhost 可以用root登录,填写本机ip无法登录,不知是啥问题导致
密码123456

技术分享图片

 

 

 

 

 

  • 修改:HttpRunnerManager/HttpRunnerManager/settings.py里DATABASES字典和邮件发送账号相关配置

    1.      DATABASES = {
               ‘default‘: {
               ‘ENGINE‘: ‘django.db.backends.mysql‘,
               ‘NAME‘: ‘HttpRunner‘,  # 新建数据库名
               ‘USER‘: ‘root‘,  # 数据库登录名
               ‘PASSWORD‘: ‘lcc123456‘,  # 数据库登录密码
               ‘HOST‘: ‘127.0.0.1‘,  # 数据库所在服务器ip地址
               ‘PORT‘: ‘3306‘,  # 监听端口 默认3306即可
           }
       }
      
       EMAIL_SEND_USERNAME = ‘[email protected]‘  # 定时任务报告发送邮箱,支持163,qq,sina,企业qq邮箱等,注意需要开通smtp服务
       EMAIL_SEND_PASSWORD = ‘password‘     # 邮箱密码

       

  • 安装rabbitmq消息中间件,启动服务,访问:http://host:15672/#/ host即为你部署rabbitmq的服务器ip地址 username:guest、Password:guest, 成功登陆即可
service rabbitmq-server start 小编这边执行这句的时候报错了,其实安装好rabbitmq直接可以登录了

 

安装rabbitMQ之前,需要先安装Erlang 
http://www.erlang.org/downloads

 

技术分享图片

1.安装Erlang
所以在安装rabbitMQ之前,需要先安装Erlang 。
小编使用的是otp_win64_20.3 ,需要其他版本或者32位系统的,可以去官网下载。
全部点击“下一步”就行
有的选择其他的安装方式,可能需要添加一下系统环境变量(正常安装的也要检查下):

技术分享图片

技术分享图片

 

 

(1):下载erlang,原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:http://www.erlang.org/downloads,双击.exe文件进行安装就好,安装完成之后创建一个名为ERLANG_HOME的环境变量,其值指向erlang的安装目录,同时将%ERLANG_HOME%in加入到Path中,最后打开命令行,输入erl,如果出现erlang的版本信息就表示erlang语言环境安装成功;
2.安装RabbitMQ
下载运行rabbitmq-server-3.7.6 ,需要其他版本或者32位系统的,可以去官网下载。
依旧可以不改变默认进行安装。
需要注意:默认安装的RabbitMQ 监听端口是5672

3.配置
激活 RabbitMQ‘s Management Plugin
使用RabbitMQ 管理插件,可以更好的可视化方式查看Rabbit MQ 服务器实例的状态。
打开命令窗口:
输入命令:
"G:Tools abbitMQRabbitMQ Server abbitmq_server-3.7.6sbin abbitmq-plugins.bat" enable rabbitmq_management
执行这个命令的时候一直报错,关闭cmder重新打开就可以了

技术分享图片

 

 技术分享图片

账号密码均是guest

技术分享图片

 

  • 修改:HttpRunnerManager/HttpRunnerManager/settings.py里worker相关配置
 djcelery.setup_loader()
    CELERY_ENABLE_UTC = True
    CELERY_TIMEZONE = ‘Asia/Shanghai‘
    BROKER_URL = ‘amqp://guest:[email protected]:5672//‘  # 127.0.0.1即为rabbitmq-server所在服务器ip地址
    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 = 10  # celery worker的并发数 也是命令行-c指定的数目 根据服务器配置实际更改 默认10
    CELERYD_MAX_TASKS_PER_CHILD = 100  # 每个worker执行了多少任务就会死掉,我建议数量可以大一些,默认100                      #小编并未对这段代码做修改

 

  • 在Python36Scripts目录下命令行窗口执行pip install -r requirements.txt 安装工程所依赖的库文件

    (需要在G:Tools软件安装包HttprunnerHttpRunnerManager-masterHttpRunnerManager-master目录下 复制requirements.txt 到G:ToolsPythonPython36Scripts目录下,PS:这里需要注意的是 小编一开始用3.7,各种报错,所以建议是用3.6 )

技术分享图片

技术分享图片

 

  •  命令行窗口切换到HttpRunnerManager目录 生成数据库迁移脚本,并生成表结构

 

  python manage.py makemigrations ApiManager #生成数据迁移脚本
    python manage.py migrate  #应用到db生成数据表

如果遇到

报:Django migrate No changes detected
去数据库查看没有生成相应表格, 删除migrations/ __pycache__的 __pycache__文件夹
然后执行

python manage.py migrate

 技术分享图片

  • 创建超级用户,用户后台管理数据库,并按提示输入相应用户名,密码,邮箱。 如不需用,可跳过此步骤
 python manage.py createsuperuser

技术分享图片

  • 启动服务
  python manage.py runserver 0.0.0.0:8000

技术分享图片

  • 启动worker, 如果选择同步执行并确保不会使用到定时任务,那么此步骤可忽略
 python manage.py celery -A HttpRunnerManager worker --loglevel=info  #启动worker
    python manage.py celery beat --loglevel=info #启动定时任务监听器
    celery flower #启动任务监控后台

技术分享图片

技术分享图片

技术分享图片

 

 

 技术分享图片

技术分享图片

未完待续




























































以上是关于基于HttpRunner的接口自动化测试平台HttpRunnerManager的主要内容,如果未能解决你的问题,请参考以下文章

HttpRunner接口自动化框架的使用

认识一下~接口开源框架--httprunner

接口自动化测试平台,支持HttpRunner-优化篇

基于httpRunner 框架接口测试

接口自动化测试选型-httpRunner

HttpRunner学习汇总