httprunner3 介绍与安装指南
发布时间: 2023-12-25 07:06:22 阅读量: 9 订阅数: 11
# 1. 简介
## 1.1 什么是httprunner3
httprunner3是一款开源的接口自动化测试工具,基于Python语言开发。它可以支持接口测试、性能测试和持续集成,旨在提供一站式的接口自动化解决方案。
## 1.2 httprunner3的特点和优势
httprunner3具有以下特点和优势:
- 支持多种数据格式:支持json、xml、form-urlencoded和multipart等常见数据格式。
- 灵活的数据驱动:支持参数化、关联、函数调用等,可以通过数据驱动实现更丰富的测试场景。
- 多种断言方式:支持jsonpath、regex、函数等多种断言方式,满足不同的验证需求。
- 细粒度定制:支持before_request、after_request等钩子函数,可以对请求过程进行精细化控制。
- 易扩展性:支持自定义插件和集成第三方工具,方便扩展功能。
## 1.3 httprunner3的使用场景
httprunner3适用于以下场景:
- 接口测试:对API接口进行功能验证、性能测试等。
- 自动化测试:支持接口自动化测试,提高测试效率和覆盖度。
- 接口示例:作为API接口示例的管理工具,方便开发者快速查阅接口用法。
在接下来的章节中,我们将介绍httprunner3的安装方法、快速入门、高级功能、扩展功能以及常见问题的解答。
# 2. 安装
在使用httprunner3之前,我们需要先进行一些必要的安装工作。本章将介绍如何安装Python、使用pip安装httprunner3以及配置环境变量。
### 2.1 安装Python
httprunner3基于Python开发,因此在使用之前需要先安装Python环境。
首先,可以到[Python官网](https://www.python.org/downloads/)下载最新的Python安装包,选择适合自己操作系统的版本进行下载。
安装完成后,可以在命令行窗口输入以下命令验证Python是否安装成功:
```bash
python --version
```
如果显示Python的版本号,说明安装成功。
### 2.2 使用pip安装httprunner3
安装Python后,需要使用pip工具来安装httprunner3。
在命令行窗口输入以下命令:
```bash
pip install httprunner3
```
pip会自动下载并安装httprunner3及其依赖项。
### 2.3 配置环境变量
安装完成之后,为了方便在任意位置使用httprunner3命令,我们需要将httprunner3的安装路径添加到系统的环境变量中。
在系统的环境变量中的"Path"中新增httprunner3安装路径,例如:
```
C:\Python37\Scripts
```
这样在任意位置都可以直接使用httprunner3命令了。
至此,httprunner3安装完成,我们可以开始编写和运行测试用例了。
# 3. 快速入门
在本章节中,我们将介绍如何快速使用httprunner3进行接口测试。
#### 3.1 创建一个测试项目
首先,我们需要创建一个测试项目的目录结构,可以按照以下方式进行创建:
```shell
$ mkdir my_test_project
$ cd my_test_project
$ mkdir tests
$ touch config.yml
```
在这个例子中,我们创建了一个名为`my_test_project`的目录,其中包括一个`tests`目录用于存放测试用例,以及一个`config.yml`文件用于存放配置信息。
#### 3.2 编写测试用例
在`tests`目录下,我们可以创建一个示例测试用例文件`test_example.yml`,内容如下:
```yaml
config:
name: "示例测试"
base_url: "https://api.example.com"
testcases:
- name: "示例接口测试"
request:
url: "/users/1"
method: "GET"
validate:
- eq:
status_code: 200
- json:
id: 1
```
在这个测试用例中,我们定义了一个名为“示例接口测试”的测试用例,发送了一个GET请求到`https://api.example.com/users/1`接口,并验证了返回的状态码和返回的json数据中`id`字段的值。
#### 3.3 运行测试用例
接下来,我们可以使用httprunner3来运行这个测试用例,只需要执行如下命令:
```shell
$ hrun tests/test_example.yml
```
#### 3.4 查看测试报告
当测试用例执行完成后,httprunner3会自动生成测试报告文件,我们可以在命令行中查看测试结果,也可以直接打开HTML格式的测试报告文件在浏览器中查看。
通过这些步骤,我们完成了一个简单的接口测试项目的创建、编写测试用例、运行测试用例和查看测试报告的过程。
# 4. 高级功能
在使用httprunner3进行接口测试过程中,除了常规的接口请求和响应验证,还存在一些高级功能,可以帮助提升测试效率和覆盖更多的测试场景。本章将介绍httprunner3的一些高级功能及使用方法。
### 4.1 数据驱动测试
在接口测试中,往往需要对不同的测试数据进行验证。httprunner3提供了数据驱动的功能,可以通过配置数据文件,自动运行多组测试数据,从而避免了重复编写相同的测试用例。
数据驱动测试的流程如下:
1. 创建一个数据文件,如CSV、Excel或YAML格式,用于存储测试数据。
2. 在测试用例中通过数据引用的方式,引用数据文件中的测试数据。
3. 根据数据文件中的测试数据,自动运行多次测试用例。
示例代码如下:
```python
import requests
from httprunner3 import HttpRunner, Config, Step, RunRequest, Parameters
class TestCase(HttpRunner):
config = (
Config("数据驱动测试")
.variables(**{"base_url": "http://httpbin.org"})
.export(*["request_id", "request_time"])
)
teststeps = [
Step(
RunRequest("数据驱动测试")
.with_variables(**{"foo": "bar"})
.with_data(data=[
{"path": "/get", "params": {"param1": "$request_id"}},
{"path": "/post", "data": "$foo"},
{"path": "/put", "data": "${foo}123"},
])
.validate()
.assert_equal("body.args.param1", "$request_id")
)
]
if __name__ == "__main__":
TestCase().test_start()
```
### 4.2 接口依赖和参数关联
在实际的接口测试中,有时候需要在一个接口的响应中提取某些关键字段,然后再传递给其他接口使用,这就是接口依赖和参数关联。httprunner3提供了相关的关联和依赖处理方式。
示例代码如下:
```python
import requests
from httprunner3 import HttpRunner, Config, Step, RunRequest, setup_hooks, teardown_hooks
class TestCase(HttpRunner):
config = Config("接口依赖和参数关联")
teststeps = [
Step(
RunRequest("登录接口")
.post("/login")
.with_json({"username": "test", "password": "123456"})
.validate()
.assert_equal("status_code", 200)
.extract()
.with_jmespath("body.token", "token")
),
Step(
RunRequest("获取用户信息")
.get("/user_info")
.with_headers({"Authorization": "$token"})
.validate()
.assert_equal("status_code", 200)
)
]
@setup_hooks()
def setup_data(self):
print("前置处理函数,处理测试前相关数据")
@teardown_hooks()
def teardown_data(self):
print("后置处理函数,处理测试后相关数据")
if __name__ == "__main__":
TestCase().test_start()
```
### 4.3 断言处理
在接口测试过程中,断言是非常重要的一环,用于验证接口的返回结果与期望结果是否一致。httprunner3提供了丰富的断言方式,可以根据需要选择不同的断言方式进行验证。
示例代码如下:
```python
from httprunner3 import HttpRunner, Config, Step, RunRequest
class TestCase(HttpRunner):
config = Config("断言处理")
teststeps = [
Step(
RunRequest("断言处理")
.get("/")
.validate()
.assert_status_code(200)
.assert_header_equal("Content-Type", "text/html")
.assert_json_equal("args", {})
)
]
if __name__ == "__main__":
TestCase().test_start()
```
### 4.4 数据持久化
在接口测试中,有时候需要持久化一些测试数据,用于后续操作。httprunner3提供了数据持久化的功能,可以将关键数据保存到全局变量或者文件中,方便后续测试使用。
示例代码如下:
```python
from httprunner3 import HttpRunner, Config, Step, RunRequest, save_variable
class TestCase(HttpRunner):
config = Config("数据持久化")
teststeps = [
Step(
RunRequest("登录接口")
.post("/login")
.with_json({"username": "test", "password": "123456"})
.validate()
.assert_status_code(200)
.extract()
.with_jmespath("body.token", "token")
.with_variable("username", "test")
.with_variable("password", "123456")
.with_variable("login_response", "${response}")
),
Step(
RunRequest("获取用户信息")
.get("/user_info")
.with_headers({"Authorization": "$token"})
.validate()
.assert_status_code(200)
.with_variable("user_info_response", "${response}")
.with_variable("user_id", "${response.body.user_id}")
),
Step(
save_variable("user_id", value="${user_info_response.body.user_id}")
.with_export()
)
]
if __name__ == "__main__":
TestCase().test_start()
```
通过以上代码示例,我们可以看到httprunner3的高级功能在接口测试中的作用和使用方法。这些高级功能可以帮助我们更方便地编写接口测试用例,提升测试效率和覆盖率。在实际的测试中,根据具体场景的需要,可以选择适合的高级功能来完成相应的测试任务。
# 5. 扩展功能
扩展功能是httprunner3的一个重要特点,它提供了丰富的功能来满足更多复杂场景的需求。
### 5.1 集成第三方工具
httprunner3支持集成各种第三方工具来增强测试能力。例如,我们可以使用`locust`来进行性能测试,使用`BeautifulSoup`来对HTML内容进行解析,使用`Selenium`来模拟浏览器行为等等。只需要在测试项目中安装相应的模块,并在测试用例中导入使用即可。
### 5.2 关闭系统代理
有时候我们需要在测试过程中关闭系统代理,以避免出现网络访问的干扰。在httprunner3中,我们可以通过配置文件的方式来关闭系统代理。只需要在配置文件中设置`proxy`字段为空即可。
```yaml
proxy:
disable_system_proxy: true
```
### 5.3 自定义日志输出
httprunner3内置了丰富的日志输出功能,可以输出详细的测试日志信息。同时,我们也可以根据自己的需求对日志进行自定义。例如,我们可以设置日志级别、输出格式、日志文件路径等。只需要在配置文件中进行相应的配置即可。
```yaml
logging:
log_level: DEBUG
log_file: /path/to/log_file.log
log_format: "%(asctime)s [%(levelname)s] %(message)s"
```
### 5.4 编写自定义插件
httprunner3支持编写自定义插件,以扩展其功能。通过编写自定义插件,我们可以添加新的关键字、实现自定义的断言、请求处理等功能。只需要在测试项目中编写相应的插件代码,并在配置文件中配置插件路径即可。
```yaml
ext:
plugins:
- path/to/custom_plugin.py
```
通过这种方式,我们可以根据具体的业务需求扩展httprunner3的功能,使其更加灵活和适用。
以上介绍了httprunner3扩展功能的一些常见用法,读者可以根据具体需求选择合适的功能来提升测试能力。在使用过程中如有问题或需求,也可以通过官方文档和社区获取更多支持和帮助。
# 6. 常见问题
在使用httprunner3过程中,可能会遇到一些常见问题,下面将针对这些常见问题进行解答,帮助读者更好地使用和解决问题。
#### 6.1 如何处理接口依赖问题
接口依赖是指某个接口的请求数据依赖于另一个接口的返回数据,可以通过 httprunner3 的 `setup_hooks` 和 `teardown_hooks` 来处理接口依赖问题。在 `setup_hooks` 中先请求依赖接口,将结果保存到全局变量中,然后在测试用例中使用这些数据。在 `teardown_hooks` 中可以进行清理工作,比如删除临时数据或恢复系统状态。
#### 6.2 如何处理登录态和session问题
对于登录态和session问题,可以通过httprunner3的`Session`对象来进行处理。在登录接口请求成功后,可以获取到session信息,然后在后续接口请求中通过`Session`对象来传递session信息,实现保持登录态的效果。
#### 6.3 如何实现测试数据的管理和维护
测试数据的管理和维护可以通过httprunner3的数据驱动功能来实现。将测试数据独立存放在yaml或json文件中,然后在测试用例中引用这些数据文件,实现测试数据的管理和维护。
#### 6.4 如何处理大量测试用例的管理
对于大量的测试用例,可以通过httprunner3的组织功能来进行管理。可以按模块或功能划分目录,并将相关的测试用例放在对应的目录中,利用httprunner3的命令行工具来批量运行测试用例,实现大量测试用例的管理。
希望以上解答可以帮助到您解决常见问题,如果还有其他疑问,欢迎随时咨询。
0
0