mirror of
https://github.com/httprunner/httprunner.git
synced 2026-07-10 23:12:41 +08:00
remove cli --pretty
This commit is contained in:
@@ -14,6 +14,7 @@
|
|||||||
- remove dependency colorama and colorlog
|
- remove dependency colorama and colorlog
|
||||||
- generate reports/logs folder in current working directory
|
- generate reports/logs folder in current working directory
|
||||||
- remove cli `--validate`
|
- remove cli `--validate`
|
||||||
|
- remove cli `--pretty`
|
||||||
|
|
||||||
## 2.5.7 (2020-02-21)
|
## 2.5.7 (2020-02-21)
|
||||||
|
|
||||||
|
|||||||
@@ -1,39 +0,0 @@
|
|||||||
|
|
||||||
HttpRunner 从 `1.3.1` 版本开始,支持对 JSON 格式测试用例的内容进行样式美化功能。
|
|
||||||
|
|
||||||
## JSON 格式美化
|
|
||||||
|
|
||||||
与 YAML 格式不同,JSON 格式不强制要求缩进和换行,这有点类似于 C 语言和 Python 语言的差异。
|
|
||||||
|
|
||||||
例如,`demo-quickstart.json`文件也可以改写为如下形式。
|
|
||||||
|
|
||||||
```json
|
|
||||||
[{"config": {"name": "testcase description","variables": [],"request": {"base_url": "","headers": {"User-Agent": "python-requests/2.18.4"}}}},{"test": {"name": "/api/get-token","request": {"url": "http://127.0.0.1:5000/api/get-token","headers": {"device_sn": "FwgRiO7CNA50DSU","user_agent": "iOS/10.3","os_platform": "ios","app_version": "2.8.6","Content-Type": "application/json"},"method": "POST","json": {"sign": "9c0c7e51c91ae963c833a4ccbab8d683c4a90c98"}},"validate": [{"eq": ["status_code",200]},{"eq": ["headers.Content-Type","application/json"]},{"eq": ["content.success",true]},{"eq": ["content.token","baNLX1zhFYP11Seb"]}]}},{"test": {"name": "/api/users/1000","request": {"url": "http://127.0.0.1:5000/api/users/1000","headers": {"device_sn": "FwgRiO7CNA50DSU","token": "baNLX1zhFYP11Seb","Content-Type": "application/json"},"method": "POST","json": {"name": "user1","password": "123456"}},"validate": [{"eq": ["status_code",201]},{"eq": ["headers.Content-Type","application/json"]},{"eq": ["content.success",true]},{"eq": ["content.msg","user created successfully."]}]}}]
|
|
||||||
```
|
|
||||||
|
|
||||||
虽然上面 JSON 格式的测试用例也能正常执行,但测试用例文件的可读性太差,不利于阅读和维护。
|
|
||||||
|
|
||||||
针对该需求,可使用 `--prettify` 参数对 JSON 格式用例文件进行样式美化。
|
|
||||||
|
|
||||||
可指定单个 JSON 用例文件路径。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ hrun --prettify docs/data/demo-quickstart.json
|
|
||||||
Start to prettify JSON file: docs/data/demo-quickstart.json
|
|
||||||
success: docs/data/demo-quickstart.pretty.json
|
|
||||||
```
|
|
||||||
|
|
||||||
也可指定多个 JSON 用例文件路径。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ hrun --prettify docs/data/demo-quickstart.json docs/data/demo-quickstart.yml docs/data/demo-quickstart-0.json
|
|
||||||
WARNING Only JSON file format can be prettified, skip: docs/data/demo-quickstart.yml
|
|
||||||
Start to prettify JSON file: docs/data/demo-quickstart.json
|
|
||||||
success: docs/data/demo-quickstart.pretty.json
|
|
||||||
Start to prettify JSON file: docs/data/demo-quickstart-0.json
|
|
||||||
success: docs/data/demo-quickstart-0.pretty.json
|
|
||||||
```
|
|
||||||
|
|
||||||
如上所示,当传入的文件后缀不是`.json`,HttpRunner 会打印 WARNING 信息,并跳过检测。
|
|
||||||
|
|
||||||
若转换成功,则打印美化后的文件路径;若 JSON 文件格式存在异常,则打印详细的报错信息,精确到错误在文件中出现的行和列。
|
|
||||||
@@ -5,12 +5,10 @@ import sys
|
|||||||
import sentry_sdk
|
import sentry_sdk
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
from httprunner import __description__, __version__, exceptions
|
from httprunner import __description__, __version__
|
||||||
from httprunner.api import HttpRunner
|
from httprunner.api import HttpRunner
|
||||||
from httprunner.loader import load_cases
|
|
||||||
from httprunner.report import gen_html_report
|
from httprunner.report import gen_html_report
|
||||||
from httprunner.utils import (create_scaffold,
|
from httprunner.utils import create_scaffold, init_sentry_sdk
|
||||||
prettify_json_file, init_sentry_sdk)
|
|
||||||
|
|
||||||
init_sentry_sdk()
|
init_sentry_sdk()
|
||||||
|
|
||||||
@@ -52,9 +50,6 @@ def main():
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--startproject',
|
'--startproject',
|
||||||
help="Specify new project name.")
|
help="Specify new project name.")
|
||||||
parser.add_argument(
|
|
||||||
'--prettify', nargs='*',
|
|
||||||
help="Prettify JSON testcase format.")
|
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
@@ -67,10 +62,6 @@ def main():
|
|||||||
print(f"{__version__}")
|
print(f"{__version__}")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
if args.prettify:
|
|
||||||
prettify_json_file(args.prettify)
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
project_name = args.startproject
|
project_name = args.startproject
|
||||||
if project_name:
|
if project_name:
|
||||||
create_scaffold(project_name)
|
create_scaffold(project_name)
|
||||||
|
|||||||
@@ -514,33 +514,6 @@ def gen_cartesian_product(*args):
|
|||||||
return product_list
|
return product_list
|
||||||
|
|
||||||
|
|
||||||
def prettify_json_file(file_list):
|
|
||||||
""" prettify JSON testcase format
|
|
||||||
"""
|
|
||||||
for json_file in set(file_list):
|
|
||||||
if not json_file.endswith(".json"):
|
|
||||||
logger.warning(f"Only JSON file format can be prettified, skip: {json_file}")
|
|
||||||
continue
|
|
||||||
|
|
||||||
logger.info(f"Start to prettify JSON file: {json_file}")
|
|
||||||
|
|
||||||
dir_path = os.path.dirname(json_file)
|
|
||||||
file_name, file_suffix = os.path.splitext(os.path.basename(json_file))
|
|
||||||
outfile = os.path.join(dir_path, f"{file_name}.pretty.json")
|
|
||||||
|
|
||||||
with io.open(json_file, 'r', encoding='utf-8') as stream:
|
|
||||||
try:
|
|
||||||
obj = json.load(stream)
|
|
||||||
except ValueError as e:
|
|
||||||
raise SystemExit(e)
|
|
||||||
|
|
||||||
with io.open(outfile, 'w', encoding='utf-8') as out:
|
|
||||||
json.dump(obj, out, indent=4, separators=(',', ': '))
|
|
||||||
out.write('\n')
|
|
||||||
|
|
||||||
print(f"success: {outfile}")
|
|
||||||
|
|
||||||
|
|
||||||
def omit_long_data(body, omit_len=512):
|
def omit_long_data(body, omit_len=512):
|
||||||
""" omit too long str/bytes
|
""" omit too long str/bytes
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -66,7 +66,6 @@ nav:
|
|||||||
- 环境变量: prepare/dot-env.md
|
- 环境变量: prepare/dot-env.md
|
||||||
- 测试用例分层: prepare/testcase-layer.md
|
- 测试用例分层: prepare/testcase-layer.md
|
||||||
- 参数化数据驱动: prepare/parameters.md
|
- 参数化数据驱动: prepare/parameters.md
|
||||||
- Validate & Prettify: prepare/validate-pretty.md
|
|
||||||
- 信息安全: prepare/security.md
|
- 信息安全: prepare/security.md
|
||||||
- 文件上传场景: prepare/upload-case.md
|
- 文件上传场景: prepare/upload-case.md
|
||||||
- 测试执行:
|
- 测试执行:
|
||||||
|
|||||||
Reference in New Issue
Block a user