From fe28772813a5209c4ea5d09f9c5764844e73897e Mon Sep 17 00:00:00 2001 From: debugtalk Date: Wed, 23 Mar 2022 15:46:54 +0800 Subject: [PATCH] refactor: merge hrp into httprunner repo --- .github/workflows/hrp-release.yml | 2 +- README.md | 94 ++++++++ docs/CHANGELOG.md | 5 + docs/README.md | 6 +- {hrp/docs => docs}/assets/flow.jpg | Bin {hrp/docs => docs}/builtin.md | 0 hrp/README.md | 316 -------------------------- main.go => hrp/cmd/cli/main.go | 0 hrp/docs/README.md | 9 - hrp/docs/assets/hogwarts.jpeg | Bin 76446 -> 0 bytes hrp/docs/assets/qrcode.jpg | Bin 8706 -> 0 bytes hrp/docs/assets/sentry-logo-black.svg | 1 - scripts/build.sh | 2 +- 13 files changed, 103 insertions(+), 332 deletions(-) create mode 100644 README.md rename {hrp/docs => docs}/assets/flow.jpg (100%) rename {hrp/docs => docs}/builtin.md (100%) delete mode 100644 hrp/README.md rename main.go => hrp/cmd/cli/main.go (100%) delete mode 100644 hrp/docs/README.md delete mode 100644 hrp/docs/assets/hogwarts.jpeg delete mode 100644 hrp/docs/assets/qrcode.jpg delete mode 100644 hrp/docs/assets/sentry-logo-black.svg diff --git a/.github/workflows/hrp-release.yml b/.github/workflows/hrp-release.yml index 2bed01de..69d53d1f 100644 --- a/.github/workflows/hrp-release.yml +++ b/.github/workflows/hrp-release.yml @@ -25,7 +25,7 @@ jobs: github_token: ${{ secrets.GITHUB_TOKEN }} goos: ${{ matrix.goos }} goarch: ${{ matrix.goarch }} - project_path: "." # go build ./main.go + project_path: "hrp/cmd/cli/" # go build hrp/cmd/cli/main.go binary_name: "hrp" ldflags: "-s -w" extra_files: LICENSE README.md docs/CHANGELOG.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..84a4a886 --- /dev/null +++ b/README.md @@ -0,0 +1,94 @@ +# HttpRunner + +[![Github Actions](https://github.com/httprunner/httprunner/actions/workflows/unittest.yml/badge.svg)](https://github.com/httprunner/httprunner/actions) +[![codecov](https://codecov.io/gh/httprunner/httprunner/branch/master/graph/badge.svg)](https://codecov.io/gh/httprunner/httprunner) +[![Go Report Card](https://goreportcard.com/badge/github.com/httprunner/httprunner)](https://goreportcard.com/report/github.com/httprunner/httprunner) +[![Go Reference](https://pkg.go.dev/badge/github.com/httprunner/httprunner.svg)](https://pkg.go.dev/github.com/httprunner/httprunner) +[![downloads](https://pepy.tech/badge/httprunner)](https://pepy.tech/project/httprunner) +[![pypi version](https://img.shields.io/pypi/v/httprunner.svg)](https://pypi.python.org/pypi/httprunner) +[![pyversions](https://img.shields.io/pypi/pyversions/httprunner.svg)](https://pypi.python.org/pypi/httprunner) +[![TesterHome](https://img.shields.io/badge/TTF-TesterHome-2955C5.svg)](https://testerhome.com/github_statistics) + +HttpRunner aims to be a one-stop solution for HTTP(S) testing, covering API testing, load testing and digital experience monitoring (DEM). + +See [CHANGELOG]. + +> HttpRunner [用户调研问卷][survey] 持续收集中,我们将基于用户反馈动态调整产品特性和需求优先级。 + +## Key Features + +![flow chart](docs/assets/flow.jpg) + +### API Testing + +- [x] Full support for HTTP(S)/1.1 requests. +- [ ] Support more protocols, HTTP/2, WebSocket, TCP, RPC etc. +- [x] Testcases can be described in multiple formats, `YAML`/`JSON`/`Golang`, and they are interchangeable. +- [x] Use Charles/Fiddler/Chrome/etc to record HTTP requests and generate testcases from exported [`HAR`][HAR]. +- [x] Supports `variables`/`extract`/`validate`/`hooks` mechanisms to create extremely complex test scenarios. +- [x] Data driven with `parameterize` mechanism, supporting sequential/random/unique strategies to select data. +- [ ] Built-in 100+ commonly used functions for ease, including md5sum, max/min, sleep, gen_random_string etc. +- [x] Create and call custom functions with `plugin` mechanism, support [hashicorp plugin] and [go plugin]. +- [x] Generate html reports with rich test results. +- [x] Using it as a `CLI tool` or a `library` are both supported. + +### Load Testing + +Base on the API testing testcases, you can run professional load testing without extra work. + +- [x] Inherit all powerful features of [`locust`][locust] and [`boomer`][boomer]. +- [x] Report performance metrics to [prometheus pushgateway][pushgateway]. +- [x] Use `transaction` to define a set of end-user actions that represent the real user activities. +- [x] Use `rendezvous` points to force Vusers to perform tasks concurrently during test execution. +- [x] Load testing with specified concurrent users or constant RPS, also supports spawn rate. +- [ ] Support mixed-scenario testing with custom weight. +- [ ] Simulate browser's HTTP parallel connections. +- [ ] IP spoofing. +- [ ] Run in distributed mode to generate unlimited RPS. + +### Digital Experience Monitoring (DEM) + +You can also monitor online services for digital experience assessments. + +- [ ] HTTP(S) latency statistics including DNSLookup, TCP connections, SSL handshakes, content transfers, etc. +- [ ] `ping` indicators including latency, throughput and packets loss. +- [ ] traceroute +- [ ] DNS monitoring + +## Sponsors + +Thank you to all our sponsors! ✨🍰✨ ([become a sponsor](sponsors.md)) + +### 金牌赞助商(Gold Sponsor) + +[霍格沃兹测试开发学社](https://ceshiren.com/) + +> [霍格沃兹测试开发学社](http://qrcode.testing-studio.com/f?from=httprunner&url=https://ceshiren.com)是业界领先的测试开发技术高端教育品牌,隶属于[测吧(北京)科技有限公司](http://qrcode.testing-studio.com/f?from=httprunner&url=https://www.testing-studio.com) 。学院课程由一线大厂测试经理与资深测试开发专家参与研发,实战驱动。课程涵盖 web/app 自动化测试、接口测试、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移&右移、精准测试、测试平台开发、测试管理等内容,帮助测试工程师实现测试开发技术转型。通过优秀的学社制度(奖学金、内推返学费、行业竞赛等多种方式)来实现学员、学社及用人企业的三方共赢。 + +> [进入测试开发技术能力测评!](http://qrcode.testing-studio.com/f?from=httprunner&url=https://ceshiren.com/t/topic/14940) + +### 开源服务赞助商(Open Source Sponsor) + +[Sentry](https://sentry.io/_/open-source/) + +HttpRunner is in Sentry Sponsored plan. + +## Subscribe + +关注 HttpRunner 的微信公众号,第一时间获得最新资讯。 + +HttpRunner + +如果你期望加入 HttpRunner 核心用户群,请填写[用户调研问卷][survey]并留下你的联系方式,作者将拉你进群。 + +[HttpRunner]: https://github.com/httprunner/httprunner +[boomer]: https://github.com/myzhan/boomer +[locust]: https://github.com/locustio/locust +[jmespath]: https://jmespath.org/ +[allure]: https://docs.qameta.io/allure/ +[HAR]: http://httparchive.org/ +[hashicorp plugin]: https://github.com/hashicorp/go-plugin +[go plugin]: https://pkg.go.dev/plugin +[CHANGELOG]: docs/CHANGELOG.md +[pushgateway]: https://github.com/prometheus/pushgateway +[survey]: https://wj.qq.com/s2/9699514/0d19/ diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 6b0e2e52..57e694d3 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -452,6 +452,10 @@ - remove cli `--validate` - remove cli `--pretty` +## 2.0 (2019-01-01~2020-02-21) + +reference: [v2-changelog] + [hrp]: https://github.com/httprunner/hrp [hashicorp/go-plugin]: https://github.com/hashicorp/go-plugin @@ -467,3 +471,4 @@ [locust]: https://locust.io/ [black]: https://github.com/psf/black [loguru]: https://github.com/Delgan/loguru +[v2-changelog]: https://github.com/httprunner/httprunner/blob/v2/docs/CHANGELOG.md diff --git a/docs/README.md b/docs/README.md index 6ca9aee0..3e2f5276 100644 --- a/docs/README.md +++ b/docs/README.md @@ -2,10 +2,8 @@ # HttpRunner [![downloads](https://pepy.tech/badge/httprunner)](https://pepy.tech/project/httprunner) -[![unittest](https://github.com/httprunner/httprunner/workflows/unittest/badge.svg -)](https://github.com/httprunner/httprunner/actions) -[![integration-test](https://github.com/httprunner/httprunner/workflows/integration_test/badge.svg -)](https://github.com/httprunner/httprunner/actions) +[![unittest](https://github.com/httprunner/httprunner/workflows/unittest/badge.svg)](https://github.com/httprunner/httprunner/actions) +[![integration-test](https://github.com/httprunner/httprunner/workflows/integration_test/badge.svg)](https://github.com/httprunner/httprunner/actions) [![codecov](https://codecov.io/gh/httprunner/httprunner/branch/master/graph/badge.svg)](https://codecov.io/gh/httprunner/httprunner) [![pypi version](https://img.shields.io/pypi/v/httprunner.svg)](https://pypi.python.org/pypi/httprunner) [![pyversions](https://img.shields.io/pypi/pyversions/httprunner.svg)](https://pypi.python.org/pypi/httprunner) diff --git a/hrp/docs/assets/flow.jpg b/docs/assets/flow.jpg similarity index 100% rename from hrp/docs/assets/flow.jpg rename to docs/assets/flow.jpg diff --git a/hrp/docs/builtin.md b/docs/builtin.md similarity index 100% rename from hrp/docs/builtin.md rename to docs/builtin.md diff --git a/hrp/README.md b/hrp/README.md deleted file mode 100644 index f27e5d1d..00000000 --- a/hrp/README.md +++ /dev/null @@ -1,316 +0,0 @@ -# hrp (HttpRunner+) - -[![Go Reference](https://pkg.go.dev/badge/github.com/httprunner/hrp.svg)](https://pkg.go.dev/github.com/httprunner/hrp) -[![Github Actions](https://github.com/httprunner/hrp/actions/workflows/unittest.yml/badge.svg)](https://github.com/httprunner/hrp/actions) -[![codecov](https://codecov.io/gh/httprunner/hrp/branch/main/graph/badge.svg?token=HPCQWCD7KO)](https://codecov.io/gh/httprunner/hrp) -[![Go Report Card](https://goreportcard.com/badge/github.com/httprunner/hrp)](https://goreportcard.com/report/github.com/httprunner/hrp) -[![FOSSA Status](https://app.fossa.com/api/projects/custom%2B27856%2Fgithub.com%2Fhttprunner%2Fhrp.svg?type=shield)](https://app.fossa.com/reports/c2742455-c8ab-4b13-8fd7-4a35ba0b2840) - -`hrp` aims to be a one-stop solution for HTTP(S) testing, covering API testing, load testing and digital experience monitoring (DEM). - -See [CHANGELOG]. - -> HttpRunner [用户调研问卷][survey] 持续收集中,我们将基于用户反馈动态调整产品特性和需求优先级。 - -## Key Features - -![flow chart](docs/assets/flow.jpg) - -### API Testing - -- [x] Full support for HTTP(S)/1.1 requests. -- [ ] Support more protocols, HTTP/2, WebSocket, TCP, RPC etc. -- [x] Testcases can be described in multiple formats, `YAML`/`JSON`/`Golang`, and they are interchangeable. -- [x] Use Charles/Fiddler/Chrome/etc to record HTTP requests and generate testcases from exported [`HAR`][HAR]. -- [x] Supports `variables`/`extract`/`validate`/`hooks` mechanisms to create extremely complex test scenarios. -- [x] Data driven with `parameterize` mechanism, supporting sequential/random/unique strategies to select data. -- [ ] Built-in 100+ commonly used functions for ease, including md5sum, max/min, sleep, gen_random_string etc. -- [x] Create and call custom functions with `plugin` mechanism, support [hashicorp plugin] and [go plugin]. -- [x] Generate html reports with rich test results. -- [x] Using it as a `CLI tool` or a `library` are both supported. - -### Load Testing - -Base on the API testing testcases, you can run professional load testing without extra work. - -- [x] Inherit all powerful features of [`locust`][locust] and [`boomer`][boomer]. -- [x] Report performance metrics to [prometheus pushgateway][pushgateway]. -- [x] Use `transaction` to define a set of end-user actions that represent the real user activities. -- [x] Use `rendezvous` points to force Vusers to perform tasks concurrently during test execution. -- [x] Load testing with specified concurrent users or constant RPS, also supports spawn rate. -- [ ] Support mixed-scenario testing with custom weight. -- [ ] Simulate browser's HTTP parallel connections. -- [ ] IP spoofing. -- [ ] Run in distributed mode to generate unlimited RPS. - -### Digital Experience Monitoring (DEM) - -You can also monitor online services for digital experience assessments. - -- [ ] HTTP(S) latency statistics including DNSLookup, TCP connections, SSL handshakes, content transfers, etc. -- [ ] `ping` indicators including latency, throughput and packets loss. -- [ ] traceroute -- [ ] DNS monitoring - -## Quick Start - -### use as CLI tool - -You can install `hrp` with one shell command, which will download the latest version's released binary and install to the current system. - -```bash -# install via curl -$ bash -c "$(curl -ksSL https://httprunner.oss-cn-beijing.aliyuncs.com/install.sh)" -# install via wget -$ bash -c "$(wget https://httprunner.oss-cn-beijing.aliyuncs.com/install.sh -O -)" -``` - -If you are a golang developer, you can also install `hrp` with `go get`. - -```bash -$ go get github.com/httprunner/hrp/cli/hrp -``` - -Since installed, you will get a `hrp` command with multiple sub-commands. - -```text -$ hrp -h - -██╗ ██╗████████╗████████╗██████╗ ██████╗ ██╗ ██╗███╗ ██╗███╗ ██╗███████╗██████╗ -██║ ██║╚══██╔══╝╚══██╔══╝██╔══██╗██╔══██╗██║ ██║████╗ ██║████╗ ██║██╔════╝██╔══██╗ -███████║ ██║ ██║ ██████╔╝██████╔╝██║ ██║██╔██╗ ██║██╔██╗ ██║█████╗ ██████╔╝ -██╔══██║ ██║ ██║ ██╔═══╝ ██╔══██╗██║ ██║██║╚██╗██║██║╚██╗██║██╔══╝ ██╔══██╗ -██║ ██║ ██║ ██║ ██║ ██║ ██║╚██████╔╝██║ ╚████║██║ ╚████║███████╗██║ ██║ -╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝ - -hrp (HttpRunner+) aims to be a one-stop solution for HTTP(S) testing, covering API testing, -load testing and digital experience monitoring (DEM). Enjoy! ✨ 🚀 ✨ - -License: Apache-2.0 -Website: https://httprunner.com -Github: https://github.com/httprunner/hrp -Copyright 2021 debugtalk - -Usage: - hrp [command] - -Available Commands: - boom run load test with boomer - completion generate the autocompletion script for the specified shell - har2case convert HAR to json/yaml testcase files - help Help about any command - run run API test - startproject create a scaffold project - -Flags: - -h, --help help for hrp - --log-json set log to json format - -l, --log-level string set log level (default "INFO") - -v, --version version for hrp - -Use "hrp [command] --help" for more information about a command. -``` - -You can use `hrp run` command to run HttpRunner JSON/YAML testcases. The following is an example running [examples/demo.json][demo.json] - -
-$ hrp run examples/demo.json - -```text -5:21PM INF Set log to color console other than JSON format. -5:21PM ??? Set log level -5:21PM INF [init] SetDebug debug=true -5:21PM INF [init] SetFailfast failfast=true -5:21PM INF [init] Reset session variables -5:21PM INF load json testcase path=/Users/debugtalk/MyProjects/HttpRunner-dev/hrp/examples/demo.json -5:21PM INF call function success arguments=[5] funcName=gen_random_string output=A65rg -5:21PM INF call function success arguments=[12.3,3.45] funcName=max output=12.3 -5:21PM INF run testcase start testcase="demo with complex mechanisms" -5:21PM INF transaction name=tran1 type=start -5:21PM INF run step start step="get with params" -5:21PM INF call function success arguments=[12.3,34.5] funcName=max output=34.5 --------------------- request -------------------- -GET /get?foo1=A65rg&foo2=34.5 HTTP/1.1 -Host: postman-echo.com -User-Agent: HttpRunnerPlus - - -==================== response =================== -HTTP/1.1 200 OK -Content-Length: 304 -Connection: keep-alive -Content-Type: application/json; charset=utf-8 -Date: Thu, 23 Dec 2021 09:21:30 GMT -Etag: W/"130-t7qE4M7C+OQ0jGdRWkr2R3gjq+w" -Set-Cookie: sails.sid=s%3AAiqfRgMtWKG3oOQnXJOxRD8xk58rtAW6.eD%2BBo7FBnA82XLsLFiadeg6OcuD2zHSTyhv2l%2FDVuCk; Path=/; HttpOnly -Vary: Accept-Encoding - -{"args":{"foo1":"A65rg","foo2":"34.5"},"headers":{"x-forwarded-proto":"https","x-forwarded-port":"443","host":"postman-echo.com","x-amzn-trace-id":"Root=1-61c43f9a-7c855775053963a4284ba464","user-agent":"HttpRunnerPlus","accept-encoding":"gzip"},"url":"https://postman-echo.com/get?foo1=A65rg&foo2=34.5"} --------------------------------------------------- -5:21PM INF extract value from=body.args.foo1 value=A65rg -5:21PM INF set variable value=A65rg variable=varFoo1 -5:21PM INF validate status_code assertMethod=equals checkValue=200 expectValue=200 result=true -5:21PM INF validate headers."Content-Type" assertMethod=startswith checkValue="application/json; charset=utf-8" expectValue=application/json result=true -5:21PM INF validate body.args.foo1 assertMethod=length_equals checkValue=A65rg expectValue=5 result=true -5:21PM INF validate $varFoo1 assertMethod=length_equals checkValue=A65rg expectValue=5 result=true -5:21PM INF validate body.args.foo2 assertMethod=equals checkValue=34.5 expectValue=34.5 result=true -5:21PM INF run step end exportVars={"varFoo1":"A65rg"} step="get with params" success=true -5:21PM INF transaction name=tran1 type=end -5:21PM INF transaction elapsed=1021.174113 name=tran1 -5:21PM INF run step start step="post json data" -5:21PM INF call function success arguments=[12.3,3.45] funcName=max output=12.3 --------------------- request -------------------- -POST /post HTTP/1.1 -Host: postman-echo.com -Content-Type: application/json; charset=UTF-8 - -{"foo1":"A65rg","foo2":12.3} -==================== response =================== -HTTP/1.1 200 OK -Content-Length: 424 -Connection: keep-alive -Content-Type: application/json; charset=utf-8 -Date: Thu, 23 Dec 2021 09:21:30 GMT -Etag: W/"1a8-IhWXQxTXlxmnbqdRh+oBPRTLsOU" -Set-Cookie: sails.sid=s%3AzXIPVMKipoISZG0Zj4tX73vKDbIdFtzZ.xD50I4UMHUERmcgWfp64f0a8g%2BT9YIUf0Fi1l5bXbQA; Path=/; HttpOnly -Vary: Accept-Encoding - -{"args":{},"data":{"foo1":"A65rg","foo2":12.3},"files":{},"form":{},"headers":{"x-forwarded-proto":"https","x-forwarded-port":"443","host":"postman-echo.com","x-amzn-trace-id":"Root=1-61c43f9a-78aab84a36a753ea6b5dd0f7","content-length":"28","user-agent":"Go-http-client/1.1","content-type":"application/json; charset=UTF-8","accept-encoding":"gzip"},"json":{"foo1":"A65rg","foo2":12.3},"url":"https://postman-echo.com/post"} --------------------------------------------------- -5:21PM INF validate status_code assertMethod=equals checkValue=200 expectValue=200 result=true -5:21PM INF validate body.json.foo1 assertMethod=length_equals checkValue=A65rg expectValue=5 result=true -5:21PM INF validate body.json.foo2 assertMethod=equals checkValue=12.3 expectValue=12.3 result=true -5:21PM INF run step end exportVars=null step="post json data" success=true -5:21PM INF run step start step="post form data" -5:21PM INF call function success arguments=[12.3,3.45] funcName=max output=12.3 --------------------- request -------------------- -POST /post HTTP/1.1 -Host: postman-echo.com -Content-Type: application/x-www-form-urlencoded; charset=UTF-8 - -foo1=A65rg&foo2=12.3 -==================== response =================== -HTTP/1.1 200 OK -Content-Length: 445 -Connection: keep-alive -Content-Type: application/json; charset=utf-8 -Date: Thu, 23 Dec 2021 09:21:30 GMT -Etag: W/"1bd-g4G7WmMU7EzJYzPTYgqX67Ug9iE" -Set-Cookie: sails.sid=s%3Al3gcdxEQug7ddxPlA2Kfxvm7d_z9ImEt.4IQI1SVX5xuTefX0N0UvJPQxVvA1SAMm7ztHESkHXsY; Path=/; HttpOnly -Vary: Accept-Encoding - -{"args":{},"data":"","files":{},"form":{"foo1":"A65rg","foo2":"12.3"},"headers":{"x-forwarded-proto":"https","x-forwarded-port":"443","host":"postman-echo.com","x-amzn-trace-id":"Root=1-61c43f9a-6458626c64b04fd60245714b","content-length":"20","user-agent":"Go-http-client/1.1","content-type":"application/x-www-form-urlencoded; charset=UTF-8","accept-encoding":"gzip"},"json":{"foo1":"A65rg","foo2":"12.3"},"url":"https://postman-echo.com/post"} --------------------------------------------------- -5:21PM INF validate status_code assertMethod=equals checkValue=200 expectValue=200 result=true -5:21PM INF validate body.form.foo1 assertMethod=length_equals checkValue=A65rg expectValue=5 result=true -5:21PM INF validate body.form.foo2 assertMethod=equals checkValue=12.3 expectValue=12.3 result=true -5:21PM INF run step end exportVars=null step="post form data" success=true -5:21PM INF run testcase end testcase="demo with complex mechanisms" -``` -
- -### use as library - -Beside using `hrp` as a CLI tool, you can also use it as golang library. - -```bash -$ go get -u github.com/httprunner/hrp -``` - -This is an example of `HttpRunner+` testcase. You can find more in the [`examples`][examples] directory. - - -
-demo - -```go -import ( - "testing" - - "github.com/httprunner/hrp" -) - -func TestCaseDemo(t *testing.T) { - demoTestCase := &hrp.TestCase{ - Config: hrp.NewConfig("demo with complex mechanisms"). - SetBaseURL("https://postman-echo.com"). - WithVariables(map[string]interface{}{ // global level variables - "n": 5, - "a": 12.3, - "b": 3.45, - "varFoo1": "${gen_random_string($n)}", - "varFoo2": "${max($a, $b)}", // 12.3; eval with built-in function - }), - TestSteps: []hrp.IStep{ - hrp.NewStep("transaction 1 start").StartTransaction("tran1"), // start transaction - hrp.NewStep("get with params"). - WithVariables(map[string]interface{}{ // step level variables - "n": 3, // inherit config level variables if not set in step level, a/varFoo1 - "b": 34.5, // override config level variable if existed, n/b/varFoo2 - "varFoo2": "${max($a, $b)}", // 34.5; override variable b and eval again - }). - GET("/get"). - WithParams(map[string]interface{}{"foo1": "$varFoo1", "foo2": "$varFoo2"}). // request with params - WithHeaders(map[string]string{"User-Agent": "HttpRunnerPlus"}). // request with headers - Extract(). - WithJmesPath("body.args.foo1", "varFoo1"). // extract variable with jmespath - Validate(). - AssertEqual("status_code", 200, "check response status code"). // validate response status code - AssertStartsWith("headers.\"Content-Type\"", "application/json", ""). // validate response header - AssertLengthEqual("body.args.foo1", 5, "check args foo1"). // validate response body with jmespath - AssertLengthEqual("$varFoo1", 5, "check args foo1"). // assert with extracted variable from current step - AssertEqual("body.args.foo2", "34.5", "check args foo2"), // notice: request params value will be converted to string - hrp.NewStep("transaction 1 end").EndTransaction("tran1"), // end transaction - hrp.NewStep("post json data"). - POST("/post"). - WithBody(map[string]interface{}{ - "foo1": "$varFoo1", // reference former extracted variable - "foo2": "${max($a, $b)}", // 12.3; step level variables are independent, variable b is 3.45 here - }). - Validate(). - AssertEqual("status_code", 200, "check status code"). - AssertLengthEqual("body.json.foo1", 5, "check args foo1"). - AssertEqual("body.json.foo2", 12.3, "check args foo2"), - hrp.NewStep("post form data"). - POST("/post"). - WithHeaders(map[string]string{"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"}). - WithBody(map[string]interface{}{ - "foo1": "$varFoo1", // reference former extracted variable - "foo2": "${max($a, $b)}", // 12.3; step level variables are independent, variable b is 3.45 here - }). - Validate(). - AssertEqual("status_code", 200, "check status code"). - AssertLengthEqual("body.form.foo1", 5, "check args foo1"). - AssertEqual("body.form.foo2", "12.3", "check args foo2"), // form data will be converted to string - }, - } - - err := hrp.NewRunner(nil).Run(demoTestCase) // hrp.Run(demoTestCase) - if err != nil { - t.Fatalf("run testcase error: %v", err) - } -} -``` -
- -## Subscribe - -关注 HttpRunner 的微信公众号,第一时间获得最新资讯。 - -HttpRunner - -如果你期望加入 HttpRunner 核心用户群,请填写[用户调研问卷][survey]并留下你的联系方式,作者将拉你进群。 - -[HttpRunner]: https://github.com/httprunner/httprunner -[boomer]: https://github.com/myzhan/boomer -[locust]: https://github.com/locustio/locust -[jmespath]: https://jmespath.org/ -[allure]: https://docs.qameta.io/allure/ -[HAR]: http://httparchive.org/ -[hashicorp plugin]: https://github.com/hashicorp/go-plugin -[go plugin]: https://pkg.go.dev/plugin -[demo.json]: https://github.com/httprunner/hrp/blob/main/examples/demo.json -[examples]: https://github.com/httprunner/hrp/blob/main/examples/ -[CHANGELOG]: docs/CHANGELOG.md -[pushgateway]: https://github.com/prometheus/pushgateway -[survey]: https://wj.qq.com/s2/9699514/0d19/ diff --git a/main.go b/hrp/cmd/cli/main.go similarity index 100% rename from main.go rename to hrp/cmd/cli/main.go diff --git a/hrp/docs/README.md b/hrp/docs/README.md deleted file mode 100644 index 55d864b5..00000000 --- a/hrp/docs/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Links - -- Homepage: https://httprunner.com -- Docs - - Repo: https://github.com/httprunner/httprunner.github.io - - 中文: https://httprunner.com/docs - - English: https://httprunner.com/en/docs - - [hrp command help](cmd/hrp.md) -- Blog: https://httprunner.com/blog diff --git a/hrp/docs/assets/hogwarts.jpeg b/hrp/docs/assets/hogwarts.jpeg deleted file mode 100644 index 78105f91ac20085c4a5f0fb07a34300ca5e3abc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76446 zcmeFYWmH_j)+XFYkl+d4xP; Vj;3+@oywQ+ZMcXxMpx5gbBm*DO;+`I0~duP_n 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 diff --git a/hrp/docs/assets/qrcode.jpg b/hrp/docs/assets/qrcode.jpg deleted file mode 100644 index 386a237d675e9ad5bde188a1d9b991de7cabcda9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8706 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 !^* zxFdvnOGxPueNF_!*ltYn(WFC&i!3Vsby#t2%{IGReS~v1v3|4K{k9rs7PpKNDMp64 z85r(l?@nd1M>VG`_|uOBsIxJBXx4&39n+lJF!x2%?2;~PT6ao%smnwdyC;SANt13m z%bzbmq@SGLtgzuif}F~wPHi-G4fpgEpiis7!XBf)r0{RnJpMJcBD%j2H`PIFyKg~? z<5oS9)9Ql>u=3WpY1p%Ji!s@|0`!Cm6JWjoeR)lLWeBGb^Os@TaDgOSFqKLBY&Asd zo_ogIc&6E7ZU;$USu<*q8$d{+iGK=iwMiXw~v?dNQ33%{% zR0@AHt}NSEO9^A}Qs=Vdw!eV$FjAwLAc@jyrfS_$HBiP3YZM&7ocTv-S12&kLINVb?5 zmDNHTOHUi9^@u+)r{G$k6UtIe4TkFAr>Y_W^QhbN3mDI;WQb=-R5L}nei~b0DzODI zMhb}1|nDuaJn5aKa4}*EHD(p|maI4s;tsTqM@asY2|$&5^~vzz+o|p$5yc3~g+? z#7X14akz}WwE;}mARSQ5@CO-Vz+xttQW(yFPR)7c+m47M;tV50I7(oDzyz|_bmG;MrOLfsq-+pA)Di1+QCk~cNE)h z(KjOPl85xA#j*#!L3Okt3))?qJd(UM8D->=m^(%(NRhV*pK?H=XDnN2&`RhTMw?Ga zV5nOmW5n(KPJSOA0jPKhnKmJHe(jORNKt%Tb~qR#9Nq|c04`&0zbRvJED+Ob;U43* z895Um$%~H$&>crsvATEtY+$(qBg1oge;~sh$GNvX#+@)&VYbC*EjBhP7ZP{ag2P|P zm3O|`eMp+72k{QHKMh;toDYeafGbz}#sZRLV5`ISF<>oQKAwU?m?9S$WL!4gkxVoO z8HF2N6&U(!;XViOE706GnFN@3At{7p%R@j)2xC#zC(r1R$q$5RMn2L z{tisef4q)^gcS|De&6>Au;2eMPp;my2h799Mqo?^vL}~g+2cB94?cDY+Y}LILqH^! zs4f7BS=qLwB*IsZ*3V8pUB4-vj? z2Vvwn3zOpz`b#6o1Idc`1ZH4wp8a@ zuzQR~I3>`p8sm$<@38@w4^*HS0K&-%txkInoHk@cfJb3C#&pp1fS^vFBfl-ekvJD( zRtJ)|aEDVW9vE?W1%_R^bRmx6MaJn{k_w}v>k&zT}*i@PE7C#?1(LTLnbf9y=YQ#1b?erpKc{vXS)CD8x? diff --git a/hrp/docs/assets/sentry-logo-black.svg b/hrp/docs/assets/sentry-logo-black.svg deleted file mode 100644 index 59b79bc5..00000000 --- a/hrp/docs/assets/sentry-logo-black.svg +++ /dev/null @@ -1 +0,0 @@ -sentry-logo-black \ No newline at end of file diff --git a/scripts/build.sh b/scripts/build.sh index 428b5b1b..8043ceb0 100644 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -15,7 +15,7 @@ mkdir -p "output" bin_path="output/hrp" # build -go build -ldflags '-s -w' -o "$bin_path" main.go +go build -ldflags '-s -w' -o "$bin_path" hrp/cmd/cli/main.go # check output and version ls -lh "$bin_path"