Giter Site home page Giter Site logo

zhouhao777 / apitestengine Goto Github PK

View Code? Open in Web Editor NEW

This project forked from httprunner/httprunner

0.0 1.0 0.0 137 KB

接口自动化测试的最佳工程实践

Home Page: http://debugtalk.com/post/ApiTestEngine-api-test-best-practice/

License: MIT License

Python 100.00%

apitestengine's Introduction

ApiTestEngine

Build Status Coverage Status

核心特性

  • 支持API接口的多种请求方法,包括 GET/POST/HEAD/PUT/DELETE 等
  • 测试用例与代码分离,测试用例维护方式简洁优雅,支持YAML/JSON
  • 测试用例描述方式具有表现力,可采用简洁的方式描述输入参数和预期输出结果
  • 接口测试用例具有可复用性,便于创建复杂测试场景
  • 测试执行方式简单灵活,支持单接口调用测试、批量接口调用测试、定时任务执行测试
  • 测试结果统计报告简洁清晰,附带详尽日志记录,包括接口请求耗时、请求响应数据等
  • 身兼多职,同时实现接口管理、接口自动化测试、接口性能测试(结合Locust)
  • 具有可扩展性,便于扩展实现Web平台化

《背景介绍》 《特性拆解介绍》

Install

$ pip install -r requirements.txt

Run unittest to make sure everything is OK.

$ python -m unittest discover

编写测试用例

推荐采用YAML格式编写测试用例。

如下是一个典型的接口测试用例示例。具体的编写方式请阅读详细文档。

- config:
    name: "create user testsets."
    requires:
        - random
        - string
        - hashlib
    function_binds:
        gen_random_string: "lambda str_len: ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(str_len))"
        gen_md5: "lambda *str_args: hashlib.md5(''.join(str_args).encode('utf-8')).hexdigest()"
    variable_binds:
        - TOKEN: debugtalk
        - data: ""
        - random: ${gen_random_string(5)}
        - authorization: ${gen_md5($TOKEN, $data, $random)}
    request:
        base_url: http://127.0.0.1:5000

- test:
    name: create user which does not exist
    variable_binds:
        - data: '{"name": "user", "password": "123456"}'
    request:
        url: /api/users/1000
        method: POST
        headers:
            Content-Type: application/json
            authorization: $authorization
            random: $random
        data: $data
    validators:
        - {"check": "status_code", "comparator": "eq", "expected": 201}
        - {"check": "content.success", "comparator": "eq", "expected": true}

- test:
    name: create user which does exist
    variable_binds:
        - data: '{"name": "user", "password": "123456"}'
        - expected_status_code: 500
    request:
        url: /api/users/1000
        method: POST
        headers:
            Content-Type: application/json
            authorization: $authorization
            random: $random
        data: $data
    validators:
        - {"check": "status_code", "comparator": "eq", "expected": 500}
        - {"check": "content.success", "comparator": "eq", "expected": false}

运行测试用例

ApiTestEngine可指定运行特定的测试用例文件,或运行指定目录下的所有测试用例。

$ python main.py --testcase-path filepath/testcase.yml

$ python main.py --testcase-path testcases_folder_path

Supported Python Versions

Python 2.7, 3.3, 3.4, 3.5, and 3.6.

阅读更多

apitestengine's People

Contributors

debugtalk avatar

Watchers

wreck avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.