目录
1. 安装 HTTPRunner
2. 基本概念和目录结构
3. 编写一个 HTTPRunner 测试用例(YAML 示例)
4. 运行测试用例
5. 使用 Python 编写测试用例
6. 运行 Python 测试用例
7. 集成测试报告
8. 高级用法:集成环境变量、外部数据
9. 集成到 CI/CD 流程
10.应用说明:
简介:
HTTPRunner 是一个非常好用的自动化测试框架,它用于 HTTP API 测试,支持 RESTful、GraphQL 等接口类型,结合 YAML 或 Python 可以非常灵活地进行接口测试。它提供了一个直观的方式来写测试案例,并且可以将测试用例和报告集成到持续集成(CI)流程中。
1. 安装 HTTPRunner
1.1 使用 pip 安装
在安装之前,确保已经安装了 Python 环境(Python 3.7 以上)。然后使用以下命令安装 HTTPRunner:
pip install httprunner
1.2 检查安装是否成功
安装完成后,你可以通过以下命令来检查是否安装成功:
hrun -V
如果看到版本号输出,说明 HTTPRunner 安装成功。
2. 基本概念和目录结构
HTTPRunner 支持两种测试方式:
- YAML 格式的测试用例:适合对测试内容没有复杂编程需求的团队
- Python 格式的测试用例:适合有编程能力并且需要进行复杂逻辑或定制化的团队
3. 编写一个 HTTPRunner 测试用例(YAML 示例)
3.1 创建目录结构
推荐将测试用例组织到一个结构化的目录中:
project/
│
├── tests/
│ └── test_api.yml # 测试用例文件
├── config/
│ └── config.yml # 配置文件
├── reports/ # 存放测试报告
└── requirements.txt # 依赖的Python库
3.2 编写 YAML 测试用例
下面是一个简单的 HTTPRunner 测试用例,使用 YAML 格式编写,模拟一个 HTTP GET/POST 请求并检查返回状态码和内容。
tests/test_api.yml
config: name: "request methods testcase with functions" variables: foo1: config_bar1 foo2: config_bar2 expect_foo1: config_bar1 expect_foo2: config_bar2 headers: User-Agent: ${get_user_agent()} verify: False export: ["foo3"] teststeps: - name: get with params variables: foo1: ${ENV(USERNAME)} foo2: bar21 sum_v: "${sum_two_int(10000000, 20000000)}" request: method: GET url: $base_url/get params: foo1: $foo1 foo2: $foo2 sum_v: $sum_v extract: foo3: "body.args.foo2" validate: - eq: ["status_code", 200] - eq: ["body.args.foo1", "debugtalk"] - eq: ["body.args.sum_v", "30000000"] - eq: ["body.args.foo2", "bar21"] - name: post raw text variables: foo1: "bar12" foo3: "bar32" request: method: POST url: $base_url/post headers: Content-Type: "text/plain" body: "This is expected to be sent back as part of response body: $foo1-$foo2-$foo3." validate: - eq: ["status_code", 200] - eq: ["body.data", "This is expected to be sent back as part of response body: bar12-$expect_foo2-bar32."] - name: post form data variables: foo2: bar23 request: method: POST url: $base_url/post headers: Content-Type: "application/x-www-form-urlencoded" body: "foo1=$foo1&foo2=$foo2&foo3=$foo3" validate: - eq: ["status_code", 200] - eq: ["body.form.foo1", "$expect_foo1"] - eq: ["body.form.foo2", "bar23"] - eq: ["body.form.foo3", "bar21"]
3.3 说明
config
: 配置部分,定义了测试的基本信息、基础 URL 和一些公共变量。teststeps
: 这是测试的具体步骤,包括请求和响应的验证。request
: 请求配置,定义了请求方法、URL 和请求体。validate
: 校验部分,定义了返回结果的校验规则。
4. 运行测试用例
通过以下命令运行 YAML 格式的测试用例:
hrun run tests/test_api.yml
5. 使用 Python 编写测试用例
5.1 创建 Python 格式的测试用例
除了 YAML 格式,你还可以使用 Python 编写测试用例。下面是一个基于 Python 编写的 HTTPRunner 测试用例:
tests/test_api.py
from httprunner import HttpRunner, Config, Step, RunRequest
class TestAPI(HttpRunner):
config = Config("Test API").base_url("https://jsonplaceholder.typicode.com")
teststeps = [
Step(
RunRequest("Test POST request")
.post("/posts")
.with_json({"title": "foo", "body": "bar", "userId": 1})
.validate()
.assert_equal("status_code", 201)
.assert_json("title", "foo")
.assert_json("body", "bar")
)
]if __name__ == "__main__":
TestAPI().test_start()
5.2 说明
Config
: 配置部分,类似于 YAML 文件中的config
,用于设置基本配置。Step
: 每个测试步骤,定义请求和验证。RunRequest
: 用于设置 HTTP 请求,包括请求方法、URL、请求体和验证内容。
6. 运行 Python 测试用例
运行 Python 格式的测试用例:
python tests/test_api.py
7. 集成测试报告
HTTPRunner 默认会在 reports
目录下生成测试报告。你可以在 config.yml
中设置报告的输出路径。
7.1 自定义报告路径
config:
report:
name: "my_report.html"
save_path: "./custom_reports"
测试运行后,报告将保存在 ./custom_reports
文件夹中。
7.2 生成 HTML 测试报告
测试完成后,HTTPRunner 会自动生成一个 HTML 格式的报告,可以通过浏览器查看。报告会展示每个请求的详细信息、返回结果以及验证是否通过。
8. 高级用法:集成环境变量、外部数据
8.1 环境变量支持
你可以在 HTTPRunner 配置文件中使用环境变量来配置不同的 API 环境(比如 dev
、test
、prod
等),在运行测试时选择不同的环境。
在 config.yml
中:
env: dev
然后,在测试代码中,你可以读取并使用该环境变量。
8.2 从 Excel 或 CSV 文件加载数据
HTTPRunner 也支持从 Excel 或 CSV 文件加载测试数据。你可以将数据放在外部文件中,使用 HTTPRunner 读取这些数据并进行批量测试。
8.3 数据驱动
如果需要基于不同的测试数据执行相同的 API 测试,HTTPRunner 提供了数据驱动(Data-Driven)功能。你可以在测试步骤中引入多个测试数据,如:
teststeps:
- name: "Test POST request with multiple data"
request:
method: POST
url: "/posts"
json:
title: "$title"
body: "$body"
userId: "$user_id"
variables:
- title: ["foo", "bar"]
- body: ["test body 1", "test body 2"]
- user_id: [1, 2]
validate:
- eq: ["status_code", 201]
9. 集成到 CI/CD 流程
HTTPRunner 可以很容易地集成到持续集成和持续交付(CI/CD)流程中,例如 Jenkins 或 GitLab CI。你只需要在 CI 配置文件中添加执行 HTTPRunner 测试用例的命令,并在构建过程中生成测试报告。
# 在 CI 流程中运行 HTTPRunner 测试用例
hrun run tests/test_api.yml
10.应用说明:
- 保持测试用例清晰和简洁:将测试用例分解为多个小步骤,每个步骤单一、易于理解。
- 使用环境变量:将环境配置、API 基础 URL 和其他变量提取到配置文件或环境变量中,保持代码的灵活性。
- 使用数据驱动:从外部文件读取数据并进行批量测试,提高测试的覆盖面和效率。
- 集成到 CI/CD:在自动化构建过程中运行 HTTPRunner 测试,确保每次代码变动后 API 功能都能得到验证。