基于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:\Tools\mysql\mysql-8.0.11-winx64\mysql-8.0.11-winx64\bin\mysqld.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:\Tools\mysql\mysql-8.0.11-winx64\mysql-8.0.11-winx64\bin\mysqld.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 user\G;

授权远程数据库

#授权所有权限
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%\bin加入到Path中,最后打开命令行,输入erl,如果出现erlang的版本信息就表示erlang语言环境安装成功;
2.安装RabbitMQ
下载运行rabbitmq-server-3.7.6 ,需要其他版本或者32位系统的,可以去官网下载。
依旧可以不改变默认进行安装。
需要注意:默认安装的RabbitMQ 监听端口是5672

3.配置
激活 RabbitMQ‘s Management Plugin
使用RabbitMQ 管理插件,可以更好的可视化方式查看Rabbit MQ 服务器实例的状态。
打开命令窗口:
输入命令:
"G:\Tools\rabbitMQ\RabbitMQ Server\rabbitmq_server-3.7.6\sbin\rabbitmq-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                      #小编并未对这段代码做修改
  • 在Python36\Scripts目录下命令行窗口执行pip install -r requirements.txt 安装工程所依赖的库文件

    (需要在G:\Tools\软件安装包\Httprunner\HttpRunnerManager-master\HttpRunnerManager-master目录下 复制requirements.txt 到G:\Tools\Python\Python36\Scripts目录下,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 #启动任务监控后台

未完待续

原文地址:https://www.cnblogs.com/Lam7/p/9198593.html

时间: 2024-10-09 07:49:53

基于HttpRunner的接口自动化测试平台HttpRunnerManager(二)的相关文章

自动化工具 自研的接口自动化测试平台

原文:https://testerhome.com/topics/12648 个人自研的自动化测试平台,借鉴了部分HttpRunner的思想和部分代码,主要实现了项目管理.签名方式管理.接口管理.用例管理和测试计划的制定和运行等主要功能,其它的编辑修改都没做,现在只相当于完成了一个Demo吧.环境:Python 3.6.3Django 2.0.1Pymysql 0.8.0Requests 2.18.4 主界面 系统设置 项目管理 测试环境 接口管理 添加接口 用例管理 添加用例 一个用例可以包含

基于python的接口自动化测试框架

公司内部的软件采用B/S架构,大部分是数据的增删改查,由于还在开发阶段,所以UI界面的变化非常快,难以针对UI进行自动化测试,那样会消耗大量的精力与时间维护自动化脚本.针对此种情况,针对接口测试较为有效. 工具选择 针对接口测试的工具也很多,例如soup UI, robot framework ,甚至jmeter这样的性能测试工具也可以进行接口测试. robot framework测试框架有很多的第三方库可以使用,采用的是填表的方式进行,较容易上手,但是无法深入底层的了解客户端与服务器的交互过程

接口自动化平台——httprunnermanager

Windows 环境搭建 1. 下载安装pip install httprunner==1.4.2hrun -V #1.4.2har2case -V #0.1.8 2. httprunnermanager项目地址https://github.com/HttpRunner/HttpRunnerManager 3. 应对并发的环境(版本21)www.erlang.org/downloadshttps://www.erlang.org/downloads/21.0 4. rabbitmq 安装地址(版

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

最初的版本地址:    https://www.cnblogs.com/changqing8023/p/9873923.html 优化的地方简单的记录下: 1.页面样式做了简单的优化,以白色调为主,看着舒服点: 2.在[项目管理]中新增了设置  debugtalk.py ,进行参数化引用:<参考了  HttpRunnerManager 实现 debugtalk.py 的页面样式> 3.在[测试用例]中,引用 debugtalk.py 中的函数进行参数化:parameters:使用 list(x

基于C#的接口自动化测试(一)

其实就是找个地方然后给关键的代码做个笔记什么的-- 字符串访问API接口,访问方法为POST: string url = URL; string RequestParam = Param; string headername = HeaderName; string header = Header; string html = ""; try { WebRequest wbreq = WebRequest.Create(url); } catch (WebException WebEx

Python 基于http接口自动化测试

设计原理 基于http协议接口的测试设计,莫过于Python的requests库,简单粗暴易理解. 设计模式 采用python的flask框架,搭建一套接口自动化测试平台. 测试用例维护:采用Excel 测试结果保存:采用MongoDb存储,HTML页面展示 相关核心代码介绍: Excel模板如下: 看Excel的定义命名,基本理解,每个参数的含义 介绍: B1:要测试的接口地址 B2:该测试接口的请求参数,以"#"分隔[便于分割] B3:登录的URL,若测试不需要登录 B4:登录的j

python Django接口自动化测试

记录下自己开发的接口自动化测试平台: 接口测试相对于UI测试来说测试成本低,相对稳定,变动不大,日常测试可使用postman.jmeter.python request等进行测试. 以下就介绍python request开发的框架来进行接口测试.功能满足批量测试,支持Excel导入数据库,自定义选中测试接口,图表测试统计等功能. 后端语言采用python的django来开发,之前没接触过django,本想用java web来做后台的,但还是想尝试下,所以便有了这个作品,好在过程还顺利,边做边学,

在云平台上基于Go语言+Google图表API提供二维码生成应用

二维码能够说已经深深的融入了我们的生活其中.到处可见它的身影:但通常我们都是去扫二维码, 曾经我们分享给朋友一个网址直接把Url发过去,如今我们能够把自己的信息生成二维码再分享给他人. 这里就分享一下基于Go语言+Google图表API提供二维码生成功能的小应用,并演示怎样把它公布到云平台上, 让每一个人都能够通过网络訪问使用它. Google图表API Google在http://chart.apis.google.com 上提供了一个将表单数据自己主动转换为图表的服务. 只是,该服务非常难交

基于Ruby的watir-webdriver自动化测试方案与实施(二)

接着基于Ruby的watir-webdriver自动化测试方案与实施(一) http://www.cnblogs.com/Javame/p/4159360.html 继续 ... ... 回顾 软件自动化测试的概述 Web自动化测试的方案设计 功能方案设计 业务方案设计 Web自动化测试的方案实施 自动化测试脚本的录制和编写 自动化测试的执行和具体实现 测试操作和测试数据的回收 自动化测试脚本设计和录制 •工具: WatirRecorder++ 统一预置参数输入规则,提供规则模板,做到一个用例一