zoukankan      html  css  js  c++  java
  • 基于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中查看。记录部署中存在改动的地方。

    本地开发环境部署

    拉代码下载

    ubuntu@MITTE-SERVER:/opt$ git clone https://github.com/HttpRunner/HttpRunnerManager.git
    Cloning into 'HttpRunnerManager'...
    remote: Enumerating objects: 1, done.
    remote: Counting objects: 100% (1/1), done.
    remote: Total 3313 (delta 0), reused 0 (delta 0), pack-reused 3312
    Receiving objects: 100% (3313/3313), 36.25 MiB | 971.00 KiB/s, done.
    Resolving deltas: 100% (2154/2154), done.
    Checking connectivity... done.

    • 安装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 root@localhost: 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 root@localhost: rI5rvf5x5G,E 其中root@localhost:后面的“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 'xxh123!@#';

    #(需要注意: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 = 'username@163.com'  # 定时任务报告发送邮箱,支持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:guest@127.0.0.1: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 #启动任务监控后台

     

    未完待续

  • 相关阅读:
    从开发者的角度分析iOS应如何省电
    微信逆向工程之远程操作Mac
    [UIApplication sharedApplication].idleTimerDisabled=YES;不自动锁屏 [UIApplication sharedApplication].idleTimerDisabled=NO;自动锁屏
    [软件逆向]实战Mac系统下的软件分析+Mac QQ和微信的防撤回
    iOS的坑:ERRORITMS-90096: "Your binary is not optimized for iPhone 5
    iOS下简单实现滑动导航条
    遇到线程阻塞,主线程死亡的问题,线程与信号量的使用
    断点续传和分块上传
    关于Instruments-Leaks工具的归纳总结
    valueForKeyPath常用用法
  • 原文地址:https://www.cnblogs.com/Lam7/p/9198593.html
Copyright © 2011-2022 走看看