httprunner3 的基本语法与使用方法
发布时间: 2023-12-25 07:07:25 阅读量: 23 订阅数: 27
# 第一章:httprunner3 简介
- 1.1 什么是httprunner3
- 1.2 httprunner3 的特点与优势
- 1.3 httprunner3 的应用场景
## 第二章:httprunner3 的安装与配置
- 2.1 安装httprunner3
- 2.2 配置httprunner3
- 2.3 使用pip安装httprunner3
### 第三章:httprunner3 的基本语法
#### 3.1 YAML 格式的测试用例
在httprunner3中,测试用例一般使用YAML格式编写,以下是一个简单的HTTP接口测试用例示例:
```yaml
- test: 检查用户列表接口
request:
url: /api/users
method: GET
validate:
- eq:
status_code: 200
```
代码解释:
- 使用YAML格式编写测试用例,首先指定测试名称为"检查用户列表接口"
- 在request节点中指定接口的URL和请求方法
- 在validate节点中指定验证规则,此处验证状态码是否为200
#### 3.2 HTTP 请求与响应
httprunner3支持丰富的HTTP请求方式,包括GET、POST、PUT、DELETE等,并且可以对响应结果进行验证。
以下是一个包含POST请求及响应验证的测试用例:
```yaml
- test: 创建新用户
request:
url: /api/users
method: POST
headers:
Content-Type: application/json
json:
username: user1
password: 123456
validate:
- eq:
status_code: 201
```
代码解释:
- 发送一个POST请求到指定的URL,并设置请求头Content-Type为application/json
- 请求体中包含用户名和密码的JSON数据
- 验证返回的状态码是否为201
#### 3.3 数据驱动参数化
httprunner3支持数据驱动的参数化测试,可以通过数据驱动实现同一个测试用例多次执行。
以下是一个数据驱动测试用例的示例:
```yaml
- test: 登录接口验证
testcases:
- username: user1
password: 123456
- username: user2
password: 888888
request:
url: /api/login
method: POST
json:
username: $username
password: $password
validate:
- eq:
status_code: 200
```
代码解释:
- 使用testcases节点进行数据驱动,定义了两组不同的用户名和密码数据
- 在request节点中使用$username和$password引用了测试数据
- 验证登录接口返回的状态码是否为200
以上是httprunner3基本语法的介绍,包括YAML格式的测试用例、HTTP请求与响应、以及数据驱动参数化的使用方法。
### 第四章:httprunner3 的测试执行与报告
在本章中,我们将深入介绍如何执行 httprunner3 测试用例,并生成测试报告,以及执行过程中的错误处理方法。
#### 4.1 执行httprunner3 测试用例
在 httprunner3 中,可以使用命令行工具来执行测试用例。假设我们有一个名为 `testcase.yaml` 的测试用例文件,可以通过以下命令执行该测试用例:
```shell
hrun testcase.yaml
```
执行测试用例后,httprunner3 会依次发送请求,并进行断言验证,最终输出执行结果。
#### 4.2 生成测试报告
httprunner3 提供了生成测试报告的功能,只需要在执行命令中添加 `--report` 参数即可生成报告文件。例如:
```shell
hrun testcase.yaml --report
```
生成的测试报告文件默认为 `test_report.html`,可以在执行命令时通过 `--reportfile` 参数指定报告文件的名称。
#### 4.3 执行过程中的错误处理
在测试用例执行过程中,可能会遇到一些错误,如接口请求超时、断言失败等。httprunner3 提供了丰富的错误处理机制,可以通过异常捕获、断言失败后的处理等方式来处理错误,保证测试用例的稳定性。
## 第五章:httprunner3 的高级特性
在这一章中,我们将深入探讨httprunner3的一些高级特性,包括钩子函数和全局变量、测试用例的继承与复用,以及高级断言与验证。这些特性可以帮助我们更灵活、高效地编写和执行测试用例。
### 5.1 钩子函数和全局变量
钩子函数在httprunner3中有着重要的作用,可以在HTTP请求前后添加特定的逻辑,比如在请求前准备数据或在请求后清理数据。而全局变量则可以在整个测试用例过程中传递和共享数据,非常方便实现数据的复用和参数化。以下是一个简单的示例,演示了如何使用钩子函数和全局变量:
```python
import time
import requests
from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase, TestCase, Variables, register_hooks
def prepare(user, vars):
vars['user'] = user
vars['timestamp'] = int(time.time())
def extract(response, vars):
vars['token'] = response.json()['token']
def teardown(vars):
del vars['user']
del vars['timestamp']
del vars['token']
register_hooks(
prepare=prepare,
extract=extract,
teardown=teardown
)
class TestHookDemo(HttpRunner):
config = Config(
base_url="https://postman-echo.com"
)
teststeps = [
Step(
RunRequest(
"获取token",
"GET",
"/get",
headers={"Content-Type": "application/json"},
response_jsonpath="$.headers"
)
),
Step(
RunRequest(
"使用token发起请求",
"POST",
"/post",
headers={"Authorization": "$token"},
request_data={"key": "$user", "timestamp": "$timestamp"},
response_jsonpath="$.data"
)
)
]
if __name__ == "__main__":
TestHookDemo().run()
```
上述示例中,我们定义了`prepare`函数和`teardown`函数作为钩子函数,并通过`register_hooks`函数注册它们。在测试步骤中,我们使用了全局变量`vars`存储用户信息、时间戳和token,并在请求过程中使用了钩子函数和全局变量。这样的设计可以使测试用例更加灵活和可维护。
### 5.2 测试用例的继承与复用
在httprunner3中,我们可以通过测试用例的继承与复用来避免重复编写相似的测试步骤,提高工作效率。下面是一个简单的示例,展示了如何继承和复用测试用例:
```python
class TestLogin(HttpRunner):
config = Config(
base_url="http://httpbin.org"
)
teststeps = [
Step(
RunRequest(
"登录",
"POST",
"/post",
request_data={"username": "user", "password": "123456"},
response_jsonpath="$.json"
)
)
]
class TestOrder(HttpRunner):
config = Config(
base_url="http://httpbin.org"
)
teststeps = [
Step(
RunRequest(
"下单",
"POST",
"/post",
request_data={"product_id": 1001, "quantity": 1},
response_jsonpath="$.json"
)
)
]
class TestOrderWithLogin(TestLogin, TestOrder):
pass
```
在上述示例中,我们定义了`TestLogin`和`TestOrder`两个测试用例,分别用于登录和下单操作。然后,我们通过`TestOrderWithLogin`继承了`TestLogin`和`TestOrder`的测试步骤,从而实现了测试用例的复用。
### 5.3 高级断言与验证
除了基本的断言方式外,httprunner3还提供了一些高级的断言方式,比如正则匹配、JSON Schema验证等。使用这些高级断言方式可以更精确地验证接口返回的数据,保证接口的稳定性和可靠性。以下是一个简单的示例,演示了JSON Schema验证:
```python
class TestUser(HttpRunner):
config = Config(
base_url="https://api.github.com"
)
teststeps = [
Step(
RunRequest(
"获取用户信息",
"GET",
"/users/octocat",
response_jsonpath="$.data"
)
)
]
def validate(self, response, assert_results):
response = response.json()
assert_results["validations"] = []
assert_results["validations"].append(self.assert_json_schema(response, {
"type": "object",
"properties": {
"login": {"type": "string"},
"id": {"type": "number"},
"name": {"type": "string"}
},
"required": ["login", "id"]
}))
if __name__ == "__main__":
TestUser().run()
```
在上述示例中,我们定义了`validate`方法,并在其中使用了`assert_json_schema`方法对接口返回的数据进行了JSON Schema验证。这样可以确保接口返回的数据结构符合预期,保证接口的返回结果的准确性。
本章内容涵盖了httprunner3的一些高级特性,包括钩子函数和全局变量的使用、测试用例的继承与复用,以及高级断言与验证。这些特性可以帮助我们更灵活地编写和执行接口测试用例,提高测试用例的可维护性和可扩展性。
### 第六章:httprunner3 与持续集成
持续集成(Continuous Integration,CI)是指频繁地将代码集成到主干(main)分支的过程,通常会伴随自动化测试以确保每次集成都不会破坏代码库。httprunner3 可以很好地集成到持续集成工具中,实现自动化接口测试,并提供详细的测试反馈。
在本章节中,我们将介绍如何将httprunner3 集成到持续集成工具中,编写可持续集成的httprunner3 测试用例,以及持续集成过程中的自动化测试触发与反馈。
#### 6.1 集成httprunner3 到持续集成工具
持续集成工具如Jenkins、Travis CI、CircleCI等可以通过httprunner3的命令行接口执行测试用例,并根据测试结果触发后续的流程。用户可以在持续集成工具中配置httprunner3的执行命令,并结合Webhook等机制实现自动触发测试流程。
#### 6.2 编写可持续集成的httprunner3 测试用例
在编写httprunner3测试用例时,需要考虑持续集成的特点,包括稳定性、可维护性和可扩展性。合理使用钩子函数和全局变量,编写清晰的测试用例结构,以及实现高效的断言验证,都是促进可持续集成的重要因素。
#### 6.3 持续集成中的自动化测试触发与反馈
持续集成工具通过httprunner3执行测试用例,并根据执行结果生成相应的测试报告。这些测试报告可以提供给相关开发人员、测试人员和项目经理,以帮助他们快速了解接口测试的执行情况,及时处理接口异常和性能问题。
0
0