haf : http api auto test framework pip install haf --upgrade


Keywords
api-test, automation-framework, bus, haf, multi-runners, testcase
License
MIT
Install
pip install haf==2.7.4

Documentation

HAF

The high automation framework. 

Build Status Documentation Status PyPI GitHub release

all

How to get it

using pip to get it

   tsbxmw@ps# pip install haf --upgrade

using git tool to get it

   tsbxmw@ps# git clone https://github.com/tsbxmw/haf
   tsbxmw@ps# cd haf
   tsbxmw@ps# python setup.py install

How to run

1 using init to init workspace

    python -m haf init

or

    git clone https://github.com/tsbxmw/haf-sample

2 run it in dir haf-sample

run api case

    python -m haf run -c=config.json

run web ui case

    python -m haf run -c=config-web.json

3 find the report at the data dir

using chrome or other browsers to open the html file

Others

quick start haf-sample pypi read the doc
start haf-sample pypi doc

Plugins

id plugin name version git hub repo
1 haf api server PyPI haf webserver
2 haf sql publish PyPI haf sqlpublish

How to run your define cases

Other running locally

Local bus mode, using local bus to run all cases

  • local bus is without --bus-server(-bs) args, when running the program, the bus would be created

modify the config.json in testcases

  • change the log_path and report_path and case_path to your own path
  • delete config->run->sql_publish if you don't have an haf-publish
    {
      "config":{
        "name": "test",
        "debug" : false,
        "bus_server_port": 8801,
        "run": {
          "sql_publish": {
            "id": 1,
            "sql_name": "upload",
            "publish": true,
            "host": "192.168.0.200",
            "port": 3306,
            "username": "root",
            "password": "root",
            "database": "haf_publish",
            "protocol": "mysql"
          },
          "log": {
            "log_path": "./data"
          },
          "bus": {
            "only": false,
            "host": "",
            "port": "",
            "auth_key": ""
          },
          "report": {
            "report_path": "./data/report.html",
            "report_template": "base",
            "report_export_path": "email"
          },
          "case": [
            {
              "case_path": "./testcases/test.xlsx"
            },
            {
              "case_path": "./testcases/test2.json"
            },
            {
              "case_path": "./testcases/test1.xlsx"
            },
            {
              "case_path": "./testcases/test3.yml"
            }
          ],
          "runner":{
            "only": false,
            "count": 4
          },
          "loader": {
            "only": false
          },
          "recorder": {
            "only": false
          },
          "web_server": {
            "host": "",
            "port": "",
            "run": true
          }
        }
      }
    }

create testcase or using default cases

  • create xlsx/json/yml/py file with template in testcases/
  • using haf-sample case template

run

run with config

    python -m haf run -c=./testcases/config.json

run with args

    python -m haf run -case=./testcases/test.xlsx,./testcases/test2.json -ld=./data -rh=true -rod=./data/report.html

when running the api cases

report

when running the app cases

  • change the config.json's "report" to add report_template
    "run": {
        "type": "app"  # change type to app

        "report": {
            "report_template": "base_app",  # change report_template to base_app
            "report_path": "./data/report.html"
        }
    }

report-app

when runnng the web ui cases

  • change the config.json's "report" to add report_template
    "run": {
        "type": "web"  # change type to web

        "report": {
            "report_template": "base_web",  # change report_template to base_web
            "report_path": "./data/report.html"
        }
    }

report-app

haf samples

https://github.com/hautof/haf-sample

other run args

  • run with multi-runners (4 runners)
    python -m haf run -rc=4
  • run with web server
    python -m haf run -ws=true
  • run with only-mode
    # only loader
    python -m haf run -ol=true
    # only bus
    python -m haf run -ob=true
    # only runner
    python -m haf run -or=true
    # only recorder
    python -m haf run -ore=true
  • run with third report template
    "report": {
        "report_template": "base_app"
    }
  • run with mysql publish
    "sql_publish": {
        "id": 1,
        "sql_name": "upload",
        "publish": true,
        "host": "192.168.0.200",
        "port": 3306,
        "username": "root",
        "password": "root",
        "database": "haf_publish",
        "protocol": "mysql"
    }

sql

now hafweb support

    tsbx# pip install hafweb -U
    python -m hafweb -ss=root:root@localhost:3306@haf_publish -p=8081

web api server suport

  • get loader infos
    http://localhost:8888/loader
  • get runner infos
    http://localhost:8888/runner
  • get result infos
    http://localhost:8888/result
  • get report infos
    http://localhost:8888/report
    http://localhost:8888/report-app

FrameWork

Design

map

Doc

doc url

read the doc

wiki home

Quick Start

Release Note

release note

new features

  • now support app-ui/web-ui cases and generate report

  • support mysql result publish

  • based on local test runners

  • support xlsx,json,yml,py cases

  • report generate with html-template

  • multi-processes on different machines

  • multi-runners

  • web-server support restful api based on flask

  • only mode : loader/runner/recorder/webserver/bus/logger support