One-stop solution for HTTP(S) testing.

Overview

HttpRunner

downloads unittest integration-test codecov pypi version pyversions TesterHome

HttpRunner is a simple & elegant, yet powerful HTTP(S) testing framework. Enjoy! 🚀

Design Philosophy

Key Features

  • Inherit all powerful features of requests, just have fun to handle HTTP(S) in human way.
  • Define testcase in YAML or JSON format, run with pytest in concise and elegant manner.
  • Record and generate testcases with HAR support.
  • Supports variables/extract/validate/hooks mechanisms to create extremely complex test scenarios.
  • With debugtalk.py plugin, any function can be used in any part of your testcase.
  • With jmespath, extract and validate json response has never been easier.
  • With pytest, hundreds of plugins are readily available.
  • With allure, test report can be pretty nice and powerful.
  • With reuse of locust, you can run performance test without extra work.
  • CLI command supported, perfect combination with CI/CD.

Sponsors

Thank you to all our sponsors! 🍰 (become a sponsor)

金牌赞助商(Gold Sponsor)

霍格沃兹测试学院

霍格沃兹测试学院 是业界领先的测试开发技术高端教育品牌,隶属于测吧(北京)科技有限公司。学院课程均由 BAT 一线测试大咖执教,提供实战驱动的接口自动化测试、移动自动化测试、性能测试、持续集成与 DevOps 等技术培训,以及测试开发优秀人才内推服务。点击学习!

霍格沃兹测试学院是 HttpRunner 的首家金牌赞助商。

开源服务赞助商(Open Source Sponsor)

Sentry

HttpRunner is in Sentry Sponsored plan.

Subscribe

关注 HttpRunner 的微信公众号,第一时间获得最新资讯。

Comments
  • 参数化所有用例都取第一个值

    参数化所有用例都取第一个值

    问题描述

    请对遇到的 bug 进行简要描述。

    版本信息

    请提供如下版本信息:

    • 操作系统类型: [e.g. macos]
    • Python 版本 [e.g. 3.6]
    • HttpRunner 版本 [e.g. 3.1.6]
    • 设备 ID: [e.g. 190070690681122]

    项目文件内容(非必须)

    config:
      name: login
      base_url: ${ENV(HOST)}
      variables:
        username: '${ENV(ADMIN_USER)}'
        password: '${ENV(PASSWORD)}'
      export:
        - token
    
    teststeps:
      - name: login
        request:
          method: POST
          url: /login
          json: { 'username': '${username}', 'password': '${password}'}
        extract:
          token: "body.data.token"
        validate:
          - eq: [ "body.code", '300' ]
    
    config:
      name: login
      parameters:
        username: [ "zhangsan", "lisi", "xiaoming" ]
        password: [ "zhangsan123", "lisi123", "xiaoming123" ]
    
    teststeps:
      - name: "login"
        testcase: testcases/admin/login/login.yaml
        variables:
          username: '${username}'
          password: '${password}'
    
    
    
    

    运行命令 && 堆栈信息

    请提供在命令行中运行测试时所在的目录和命令,以及报错时的详细堆栈内容。

    hrun testsuites/admin/login/login.yaml --html=./reports/report.html
    

    日志文件

    logs.zip

    bug 
    opened by binbinu 19
  • [bug] request json body is a list

    [bug] request json body is a list

    问题描述

    我们的新增接口只会返回status code,response中不会返回任何。用postman直接调用是返回的200. 但是使用httprunner的话就报错

    版本信息

    请提供如下版本信息:

    • 操作系统类型: [ Windows]
    • Python 版本 [3.6]
    • HttpRunner 版本 [2.1.2]

    报错信息


    Traceback (most recent call last): ValueError: invalid literal for int() with base 16: b''

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): http.client.IncompleteRead: IncompleteRead(0 bytes read)

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): urllib3.exceptions.ProtocolError: ('Connection broken: IncompleteRead(0 bytes read)', IncompleteRead(0 bytes read))

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): requests.exceptions.ChunkedEncodingError: ('Connection broken: IncompleteRead(0 bytes read)', IncompleteRead(0 bytes read))

    image

    bug 
    opened by moyanzhiyu 14
  • 请求中verify参数设置为False无效

    请求中verify参数设置为False无效

    问题描述

    在config配置中设置verify参数为false,实际执行时仍会验证证书。

    版本信息

    请提供如下版本信息:

    • 操作系统类型: [e.g. Windows]
    • Python 版本 [e.g. 3.7]
    • HttpRunner 版本 [e.g. 2.0.0]

    堆栈信息

    Traceback (most recent call last): File "C:\Program Files\Python37\lib\site-packages\httprunner\api.py", line 54, in test test_runner.run_test(test_dict) File "C:\Program Files\Python37\lib\site-packages\httprunner\runner.py", line 347, in run_test self._run_test(test_dict) File "C:\Program Files\Python37\lib\site-packages\httprunner\runner.py", line 234, in _run_test **parsed_test_request File "C:\Program Files\Python37\lib\site-packages\httprunner\client.py", line 205, in request for resp_obj in response_list File "C:\Program Files\Python37\lib\site-packages\httprunner\client.py", line 205, in for resp_obj in response_list File "C:\Program Files\Python37\lib\site-packages\httprunner\client.py", line 102, in get_req_resp_record req_resp_dict["response"]["ok"] = resp_obj.ok File "C:\Program Files\Python37\lib\site-packages\requests\models.py", line 701, in ok self.raise_for_status() File "C:\Program Files\Python37\lib\site-packages\httprunner\client.py", line 20, in raise_for_status raise self.error File "C:\Program Files\Python37\lib\site-packages\httprunner\client.py", line 233, in _send_request_safe_mode return requests.Session.request(self, method, url, **kwargs) File "C:\Program Files\Python37\lib\site-packages\requests\sessions.py", line 512, in request resp = self.send(prep, **send_kwargs) File "C:\Program Files\Python37\lib\site-packages\requests\sessions.py", line 622, in send r = adapter.send(request, **kwargs) File "C:\Program Files\Python37\lib\site-packages\requests\adapters.py", line 511, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='www.homelabs.cn', port=443): Max retries exceeded with url: /api/v1/login (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1045)')))


    Ran 1 test in 0.445s

    FAILED (errors=1) variable 'role' can not be found in variables mapping, failed to output!

    项目文件结构

    .env │ debugtalk.py │ main.py │ ├─.idea │ │ misc.xml │ │ modules.xml │ │ test.iml │ │ workspace.xml │ │ │ └─inspectionProfiles ├─api │ ├─json │ │ │ │ │ ├─api_v1_login │ │ │ post.json │ │ │ │ │ ├─api_v1_logout │ │ │ get.json │ ├─reports │ 1546595125.html │ 1546595143.html │ ├─testcases │ ├─login │ │ 密码登录.yml │ │ 账号不存在时登录.yml │ │ 验证码登录.yml │ │ │ └─reports │ 报告上传.yml │ ├─testsuites ├─tools │ │ database.py

    项目文件内容(非必须)

    -   config:
            name: 正常登陆接口测试1
            base_url: ${get_base_url()}
            verify: false
            request:
              headers:
                Accept: application/json
                User-Agent: iOS/10.3
            variables:
              -  act: ${random_account()}
              -  pwd: "${md5(123456)}"
              -  role: 1
            "output": [
              role,
            ]
    -   test:
          parameters:
          - identityType: [passwd]
          variables:
          - role: 2
          setup_hooks:
          - ${init_act($act, $pwd, $role)}
          name: 正常登陆接口测试
          api: api/yml/api_v1_login/post.yml
          validate:
          - eq: ["status_code", 200]
          - eq: ["content.respStatus.code", 200]
    

    提示:请注意在去除项目敏感信息(IP、账号密码、密钥等)后再进行上传。

    invalid 
    opened by guolong123 14
  • 带中文参数请求会转为unicode,并且2.1.2无法通过data关键字解决

    带中文参数请求会转为unicode,并且2.1.2无法通过data关键字解决

    问题描述

    遇到了 https://github.com/HttpRunner/HttpRunner/issues/395#issue-363556841 的问题,尝试使用data关键字解决时报错,提示编码问题

    版本信息

    请提供如下版本信息:

    • 操作系统类型: [Windows]
    • Python 版本 [3.7]
    • HttpRunner 版本 [2.1.2]

    项目文件内容(非必须)

    name: 登录
    base_url: ${ENV(base_url)}
    variables:
        username: 用户名
        password: 密码
    
    request:
        method: POST
        url: /v1/systemUser/login
        headers:
            Content-Type: text/plain
        data: '{"username": "$username","password": "$password"}'
        # json:
        #     username: $username
        #     password: $password
    
    validate:
        - eq:
              - status_code
              - 200
    

    运行命令 && 堆栈信息

    Traceback (most recent call last): UnicodeEncodeError: 'latin-1' codec can't encode characters in position 14-16: Body ('用户名') is not valid Latin-1. Use body.encode('utf-8') if you want to send it encoded in UTF-8.

    duplicate 
    opened by lichengxun 13
  • testcases下定义了用例参数,运行提示找不到参数

    testcases下定义了用例参数,运行提示找不到参数

    testcases文件下,存在以下用例smoketest.yml:

    - config:
        name: smoketest
        request: $default_request  
    - test:
        name: 错误账密登录测试
        parameters:
            - userid-password:
                - ["xxx", "xxx"]
        suite: loginSuite($userid, $password)
    

    suite文件下,存在以下:

    - config:
        name: "suittest"
        def: loginSuite($userid, $password)
        request: $default_request
    - test:
        name: 获取token
        api: login($userid, $password)
    

    api文件下,存在以下:

    - api:
        def: login($userid, $password) 
        request:
          url: 'xxx'
          headers: {}
          method: POST
          data:
            simpleAccountService.login: |-
              {
                "areaCode" : "86",
                "password" : "$password",
                "userid" : $userid,
                }
              }
    

    为啥hrun tests/testcases/smoketest.yml时候提示httprunner.exception.VariableNotFound: password not found in recursive upward path!,求指教

    bug 
    opened by wuyajun2016 13
  • parameters的csv中包含中文时出现UnicodeDecodeError

    parameters的csv中包含中文时出现UnicodeDecodeError

    使用parameters指定参数列表,当csv中含有中文时,报错如下:

    Traceback (most recent call last):
      File "C:\Python36\Scripts\hrun-script.py", line 11, in <module>
        load_entry_point('HttpRunner==1.4.4', 'console_scripts', 'hrun')()
      File "c:\python36\lib\site-packages\httprunner\cli.py", line 82, in main_hrun
        runner = HttpRunner(failfast=args.failfast, dot_env_path=args.dot_env_path).run(args.testset_paths)
      File "c:\python36\lib\site-packages\httprunner\task.py", line 242, in run
        task_suite = init_task_suite(path_or_testsets, mapping)
      File "c:\python36\lib\site-packages\httprunner\task.py", line 206, in init_task_suite
        return TaskSuite(testsets, mapping, http_client_session)
      File "c:\python36\lib\site-packages\httprunner\task.py", line 187, in __init__
        suite = TestSuite(testset, mapping, http_client_session)
      File "c:\python36\lib\site-packages\httprunner\task.py", line 76, in __init__
        config_dict_parameters
      File "c:\python36\lib\site-packages\httprunner\task.py", line 116, in _get_parametered_variables
        self.testset_file_path
      File "c:\python36\lib\site-packages\httprunner\testcase.py", line 712, in parse_parameters
        parsed_parameter_content = testcase_parser.eval_content_with_bindings(parameter_content)
      File "c:\python36\lib\site-packages\httprunner\testcase.py", line 915, in eval_content_with_bindings
        content = self._eval_content_functions(content)
      File "c:\python36\lib\site-packages\httprunner\testcase.py", line 813, in _eval_content_functions
        eval_value = self.parameterize(*args, **kwargs)
      File "c:\python36\lib\site-packages\httprunner\testcase.py", line 794, in parameterize
        csv_content_list = FileUtils.load_file(parameter_file_path)
      File "c:\python36\lib\site-packages\httprunner\utils.py", line 128, in load_file
        return FileUtils._load_csv_file(file_path)
      File "c:\python36\lib\site-packages\httprunner\utils.py", line 112, in _load_csv_file
        for row in reader:
      File "c:\python36\lib\csv.py", line 111, in __next__
        self.fieldnames
      File "c:\python36\lib\csv.py", line 98, in fieldnames
        self._fieldnames = next(self.reader)
      File "c:\python36\lib\codecs.py", line 321, in decode
        (result, consumed) = self._buffer_decode(data, self.errors, final)
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 76: invalid continuation byte
    'utf-8' codec can't decode byte 0xd6 in position 76: invalid continuation byte
    
    bug 
    opened by lukcyjane 12
  • 关于sign值生成问题

    关于sign值生成问题

    请教一个关于sign值生成问题

    问问题之前要先解释下我司的sign值生成方式,所有的参数以key1=value1&key2=value2的格式按照首字母顺序排序后加上一个secret进行md5加密后生成的。

    如果按照中文手册中的示例一样在用例中用函数去调用加密函数的时候再去传值,当参数过多的时候会很不方便。

    开始我想是在debugtalk.py中写一个函数然后通过用例名称去读取文件,但是后来发现参数化的参数不行。

    后来我自己YY能不能像截图中这样子弄,但行不通。 image

    想请教下怎么才能很方便的去读取请求中param部分去生成sign值,不用每个用例都去填写一遍键值对~~

    想了好久没有想出来~~~~ 希望我没有问了一个很蠢的问题~~~~(〃'▽'〃)

    docs 
    opened by youshuchang 11
  • 在大量并发下DNS解析会出问题。

    在大量并发下DNS解析会出问题。

    Traceback (most recent call last): ConnectionError: HTTPConnectionPool(host='ip', port=端口号): Max retries exceeded with url: url路径 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x106831310>: Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known',)) 网上解决方法:不使用python的DNS解析标准库,使用gevent内置的取代标准库的DNS解析模块.

    pending 
    opened by junjunsay 9
  • Windows环境下无法实践开发者模式(httpbin的meinheld依赖无法安装)

    Windows环境下无法实践开发者模式(httpbin的meinheld依赖无法安装)

    安装环境:win10+python3.6 安装时出现下面的提示,安装版本与我的环境不匹配

    asus@DESKTOP-RD8H9JK MINGW64 ~/HttpRunner (master) $ pipenv install --dev Creating a virtualenv for this project... Pipfile: C:\Users\asus\HttpRunner\Pipfile Using d:\python\python36\python.exe (3.6.5) to create virtualenv... Already using interpreter d:\python\python36\python.exe Using base prefix 'd:\python\python36' New python executable in C:\Users\asus.virtualenvs\HttpRunner-gHQkxH18\Scripts\python.e xe Installing setuptools, pip, wheel...done. Setting project for HttpRunner-gHQkxH18 to C:\Users\asus\HttpRunner

    Virtualenv location: C:\Users\asus.virtualenvs\HttpRunner-gHQkxH18 Installing dependencies from Pipfile.lock (64c12a)... Ignoring enum34: markers 'python_version < "3"' don't match your environment Ignoring ipaddress: markers 'python_version < "3"' don't match your environment An error occurred while installing meinheld==0.6.1! Will try again. Ignoring ruamel.ordereddict: markers 'platform_python_implementation == "cpython" and py thon_version <= "2.7"' don't match your environment Installing initially failed dependencies... Collecting meinheld==0.6.1 Using cached https://files.pythonhosted.org/packages/6c/b7/0a6f03ba8e12862c71a7acc0c05 1f902f952f13be2a48878ebd2bc198562/meinheld-0.6.1.tar.gz Complete output from command python setup.py egg_info: Are you really running a posix compliant OS ? Be posix compliant is mandatory

    bug duplicate 
    opened by berrycam 9
  • UnicodeEncodeError: 'ascii' codec can't encode characters in position 11-13: ordinal not in range(128)

    UnicodeEncodeError: 'ascii' codec can't encode characters in position 11-13: ordinal not in range(128)

    运行测试用例后报以下错误,应该是字符编码处理有问题,因为返回结果里包含中文

    ERROR [0.133801s]: /user/init
    ----------------------------------------------------------------------
    Traceback (most recent call last):
    UnicodeEncodeError: 'ascii' codec can't encode characters in position 11-13: ordinal not in range(128)
    
    ----------------------------------------------------------------------
    Ran 2 tests in 0.375s
    
    FAILED
     (Errors=1)
    
    Generating HTML reports...
    Template is not specified, load default template instead.
    
    bug 
    opened by dengly 9
  • 若对YAML格式不熟悉,推荐使用JSON格式编写维护测试用例

    若对YAML格式不熟悉,推荐使用JSON格式编写维护测试用例

    你好, 我使用python脚本调用ate部分,执行后报keyerror: 服务端返回值应该是如下:

    {
      "statusString": "MUSS Request Successful",
      "id": "3ffd3ab1-6781-4fdd-808a-03fa48e7d5ec||f00c8366-fb7e-401f-9a33-8c7280f12044:f00c8366-fb7e-401f-9a33-8c7280f12044",
      "extension": [
        {
          "streamURL": "rtsp://159.99.251.223:554/5e551f88-d852-4106-9f57-d3377227d545_1_1.sdp||rtmps://159.99.251.223:790/live/5e551f88-d852-4106-9f57-d3377227d545_1_1_28b0efd8-4a6c-40f5-9dcf-f4c67146adaf",
          "name": "isomStreamResponseStatus"
        }
      ]
    }
    

    脚本报错:

    Traceback (most recent call last):
      File "C:\Users\e567802\AppData\Local\Programs\Python\Python36\lib\site-packages\ate\utils.py", line 125, in query_json
        json_content = json_content[key]
    KeyError: 'extension'
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "C:\Projects\PythonProject\APITest.py", line 8, in <module>
        APITest.run(testcase_path)
      File "C:\Users\e567802\AppData\Local\Programs\Python\Python36\lib\site-packages\ate\runner.py", line 198, in run
        result = self._run_testset(testset, mapping)
      File "C:\Users\e567802\AppData\Local\Programs\Python\Python36\lib\site-packages\ate\runner.py", line 171, in _run_testset
        assert self._run_test(testcase)
      File "C:\Users\e567802\AppData\Local\Programs\Python\Python36\lib\site-packages\ate\runner.py", line 118, in _run_test
        extracted_variables_mapping = resp_obj.extract_response(extract_binds)
      File "C:\Users\e567802\AppData\Local\Programs\Python\Python36\lib\site-packages\ate\response.py", line 77, in extract_response
        extracted_variables_mapping[key] = self.extract_field(field)
      File "C:\Users\e567802\AppData\Local\Programs\Python\Python36\lib\site-packages\ate\response.py", line 51, in extract_field
        return utils.query_json(json_content, sub_query)
      File "C:\Users\e567802\AppData\Local\Programs\Python\Python36\lib\site-packages\ate\utils.py", line 130, in query_json
        raise exception.ParseResponseError("failed to query json when extracting response!")
    ate.exception.ParseResponseError: failed to query json when extracting response!
    
    

    我脚本中的调用:

    from ate.runner import Runner
    from ate import utils
    
    if __name__ == '__main__' :
        #utils.SECRET_KEY='BaseTest'
        testcase_path='Test_Cases/Stream/'
        APITest=Runner()
        APITest.run(testcase_path)
    

    请问是什么问题呢?

    另外,询问下,我想改默认的debugtalk.py为BaseTest.py应该怎么设置?

    谢谢。

    invalid 
    opened by Kewings 9
  • json文件参数传递的问题

    json文件参数传递的问题

    问题描述

    api请求类似这样: { "request": { "method": "POST", "url": "/test", "json": { "appIist": "${app_list}", "desc": "test", "name": "test" } } }

    假设app_Iist是从其他接口取的,值是列表(list[dict])。 但是由于json文件格式的限制, 我们传给appIist时, 必须带上双引号, 这样appIist的值就是一个字符串。

    所以, 我们要怎么传{}和[]的值呢?

    pending 
    opened by hazer491 0
  • httprunner中,运用upload文件上传遇到一个问题,请教大家

    httprunner中,运用upload文件上传遇到一个问题,请教大家

    请求格式: ------WebKitFormBoundaryG6tvGAH7HyHYamTE Content-Disposition: form-data; name="input"

    {"appId":"bds","bizType":"Default","folders":["22","12"],"tags":[]} ------WebKitFormBoundaryG6tvGAH7HyHYamTE Content-Disposition: form-data; name="files"; filename="14.jpg" Content-Type: image/jpeg

    脚本代码

      upload:
        files: data/api.jpg
        input:
          ppId: 'bds'
          bizType: 'Default'
          folders:
            - '22'
            - '12'
          tags: [ ]
    

    结果还是上传失败,报错500

    pending 
    opened by snomy1 0
  • 目前支持curl指令转换测试用例吗?

    目前支持curl指令转换测试用例吗?

    版本: hrp version v4.3.0 目前支持curl指令到测试用例的转换吗?如果支持的话能否给个例子?

    显示 Use "hrp convert [command] --help" for more information about a command. Screen Shot 2022-12-20 at 5 33 04 pm

    但使用命令hrp convert curl --help时会报错 Screen Shot 2022-12-20 at 5 30 33 pm

    pending 
    opened by Renyqin 0
  • httprunner4 不支持API中定义base_url

    httprunner4 不支持API中定义base_url

    问题描述

    能不能在models文件的 TRequest/TStep 对象中加入 base_url 便于测试用例中存在多个不同的域名时,分别在不同的api中定义这个域名。目前httprunner4如果在测试用例中使用统一的base_url会覆盖api中定义的base_url. 之前在httprunner2.5.7中是支持这一特性

    请对 bug 进行简要描述; 尽量附带运行的命令和报错时的堆栈信息

    版本信息

    请提供如下版本信息:

    • 操作系统类型: [e.g. macOS, Linux, Windows]
    • Python 版本: [e.g. 3.9]
    • Go 版本: [e.g. 1.18]
    • HttpRunner 版本 [e.g. 3.1.8]

    项目文件内容(非必须)

    如果可能,提供项目测试用例文件原始内容可加快 bug 定位和修复速度。

    提示:请注意在去除项目敏感信息(IP、账号密码、密钥等)后再进行上传。

    pending 
    opened by jiqialin 0
  • build(deps): bump certifi from 2021.10.8 to 2022.12.7

    build(deps): bump certifi from 2021.10.8 to 2022.12.7

    Bumps certifi from 2021.10.8 to 2022.12.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies python 
    opened by dependabot[bot] 0
Releases(v4.3.1)
Automatically mock your HTTP interactions to simplify and speed up testing

VCR.py ?? This is a Python version of Ruby's VCR library. Source code https://github.com/kevin1024/vcrpy Documentation https://vcrpy.readthedocs.io/ R

Kevin McCarthy 2.3k Jan 1, 2023
Automatically mock your HTTP interactions to simplify and speed up testing

VCR.py ?? This is a Python version of Ruby's VCR library. Source code https://github.com/kevin1024/vcrpy Documentation https://vcrpy.readthedocs.io/ R

Kevin McCarthy 1.8k Feb 7, 2021
Language-agnostic HTTP API Testing Tool

Dredd — HTTP API Testing Framework Dredd is a language-agnostic command-line tool for validating API description document against backend implementati

Apiary 4k Jan 5, 2023
Declarative HTTP Testing for Python and anything else

Gabbi Release Notes Gabbi is a tool for running HTTP tests where requests and responses are represented in a declarative YAML-based form. The simplest

Chris Dent 139 Sep 21, 2022
PENBUD is penetration testing buddy which helps you in penetration testing by making various important tools interactive.

penbud - Penetration Tester Buddy PENBUD is penetration testing buddy which helps you in penetration testing by making various important tools interac

Himanshu Shukla 15 Feb 1, 2022
pytest plugin for distributed testing and loop-on-failures testing modes.

xdist: pytest distributed testing plugin The pytest-xdist plugin extends pytest with some unique test execution modes: test run parallelization: if yo

pytest-dev 1.1k Dec 30, 2022
HTTP client mocking tool for Python - inspired by Fakeweb for Ruby

HTTPretty 1.0.5 HTTP Client mocking tool for Python created by Gabriel Falcão . It provides a full fake TCP socket module. Inspired by FakeWeb Github

Gabriel Falcão 2k Jan 6, 2023
An interactive TLS-capable intercepting HTTP proxy for penetration testers and software developers.

mitmproxy mitmproxy is an interactive, SSL/TLS-capable intercepting proxy with a console interface for HTTP/1, HTTP/2, and WebSockets. mitmdump is the

mitmproxy 29.7k Jan 2, 2023
HTTP client mocking tool for Python - inspired by Fakeweb for Ruby

HTTPretty 1.0.5 HTTP Client mocking tool for Python created by Gabriel Falcão . It provides a full fake TCP socket module. Inspired by FakeWeb Github

Gabriel Falcão 1.9k Feb 6, 2021
Wraps any WSGI application and makes it easy to send test requests to that application, without starting up an HTTP server.

WebTest This wraps any WSGI application and makes it easy to send test requests to that application, without starting up an HTTP server. This provides

Pylons Project 325 Dec 30, 2022
Lightweight, scriptable browser as a service with an HTTP API

Splash - A javascript rendering service Splash is a javascript rendering service with an HTTP API. It's a lightweight browser with an HTTP API, implem

Scrapinghub 3.8k Jan 3, 2023
Asyncio http mocking. Similar to the responses library used for 'requests'

aresponses an asyncio testing server for mocking external services Features Fast mocks using actual network connections allows mocking some types of n

null 93 Nov 16, 2022
HTTP load generator, ApacheBench (ab) replacement, formerly known as rakyll/boom

hey is a tiny program that sends some load to a web application. hey was originally called boom and was influenced from Tarek Ziade's tool at tarekzia

Jaana Dogan 14.9k Jan 7, 2023
1st Solution to QQ Browser 2021 AIAC Track 2

1st Solution to QQ Browser 2021 AIAC Track 2 This repository is the winning solution to QQ Browser 2021 AI Algorithm Competition Track 2 Automated Hyp

DAIR Lab 24 Sep 10, 2022
Hypothesis is a powerful, flexible, and easy to use library for property-based testing.

Hypothesis Hypothesis is a family of testing libraries which let you write tests parametrized by a source of examples. A Hypothesis implementation the

Hypothesis 6.4k Jan 5, 2023
Generic automation framework for acceptance testing and RPA

Robot Framework Introduction Installation Example Usage Documentation Support and contact Contributing License Introduction Robot Framework is a gener

Robot Framework 7.7k Jan 7, 2023
Scalable user load testing tool written in Python

Locust Locust is an easy to use, scriptable and scalable performance testing tool. You define the behaviour of your users in regular Python code, inst

Locust.io 20.4k Jan 4, 2023
A modern API testing tool for web applications built with Open API and GraphQL specifications.

Schemathesis Schemathesis is a modern API testing tool for web applications built with Open API and GraphQL specifications. It reads the application s

Schemathesis.io 1.6k Jan 6, 2023
Sixpack is a language-agnostic a/b-testing framework

Sixpack Sixpack is a framework to enable A/B testing across multiple programming languages. It does this by exposing a simple API for client libraries

null 1.7k Dec 24, 2022