当前位置:   article > 正文

Python接口自动化测试:断言封装详解_python接口断言

python接口断言

在进行API接口测试时,断言起着至关重要的作用。断言是用于验证预期结果与实际结果是否一致的过程。在Python中,我们可以利用一些库来实现断言功能。

1. 安装必要的库

在Python中,我们主要会使用两个库:requests和jsonpath。requests库用于发送HTTP请求,而jsonpath库则用于解析JSON数据。

首先,我们需要安装这两个库。打开命令行,输入以下命令:

  1. pip install requests
  2. pip install jsonpath

2. 封装断言函数

接下来,我们需要编写一个断言函数。该函数负责读取接口返回的信息,并根据预先设定的条件进行断言。以下是一个基本的断言函数示例:

  1. import requests
  2. import jsonpath
  3. def assert_response(response, assertions):
  4. for assertion in assertions:
  5. actual_value = jsonpath.jsonpath(response.json(), assertion["jsonpath"])
  6. expected_value = assertion["expected_value"]
  7. assert actual_value[0] == expected_value, f"断言失败。期望值为 {expected_value},实际值为 {actual_value[0]}"

在这个函数中,我们首先使用jsonpath从JSON数据中提取实际值。然后,我们使用assert语句来进行断言,判断实际值是否等于预期值。

3. 使用断言函数

现在,我们可以在接口测试中使用这个断言函数了。

首先,我们需要发送一个HTTP请求,并获取返回的响应。然后,我们可以使用断言函数来检查响应是否符合预期。

以下是一个示例:

  1. # 发送HTTP请求
  2. url = "<http://example.com/api>"
  3. response = requests.get(url)
  4. # 定义断言
  5. assertions = [
  6. {
  7. "jsonpath": "$.status",
  8. "expected_value": "success"
  9. },
  10. {
  11. "jsonpath": "$.data[0].id",
  12. "expected_value": 1
  13. }
  14. ]
  15. # 使用断言函数
  16. assert_response(response, assertions)

在这个示例中,我们首先发送一个GET请求到http://example.com/api。然后,我们定义了两个断言:一个是检查status是否为success,另一个是检查第一条数据的id是否为1。最后,我们调用assert_response函数进行断言。

4. 高级断言示例

除了基本的断言功能之外,我们还可以进行更多的断言操作。以下是一些高级断言示例:

检查列表长度

有时候,我们需要检查返回结果中某个列表的长度是否符合预期。可以通过以下方式进行断言:

assert len(response.json()["data"]) == expected_length
  • 1

例如,假设我们期望返回的数据列表长度为10,我们可以使用上述断言来验证。

检查关键字存在

有时候,我们需要检查返回结果中是否包含某个关键字。可以通过以下方式进行断言:

assert keyword in response.json()["data"]
  • 1

例如,假设我们期望返回的数据中包含关键字"example",我们可以使用上述断言来验证。

检查响应时间

有时候,我们需要检查接口的响应时间是否在预期范围内。可以通过以下方式进行断言:

assert response.elapsed.total_seconds() <= expected_time
  • 1

例如,假设我们期望接口的响应时间不超过5秒,我们可以使用上述断言来验证。

检查状态码

在接口测试中,我们经常需要检查返回的状态码是否符合预期。可以通过以下方式进行断言:

assert response.status_code == expected_status_code
  • 1

例如,假设我们期望返回的状态码为200,我们可以使用上述断言来验证。

通过这些高级断言操作,我们可以更加灵活地进行接口测试和结果验证。

5. 完全封装的断言方法

除了逐个断言检查外,我们还可以将所有断言封装到一个方法中,以便更方便地进行结果验证。以下是一个完全封装的断言方法示例:

  1. import requests
  2. import jsonpath
  3. def assert_responses(responses, assertions):
  4. for index, response in enumerate(responses):
  5. for assertion in assertions[index]:
  6. actual_value = jsonpath.jsonpath(response.json(), assertion["jsonpath"])
  7. expected_value = assertion["expected_value"]
  8. assert actual_value[0] == expected_value, f"断言失败。期望值为 {expected_value},实际值为 {actual_value[0]}"

在这个方法中,我们接受一个包含多个响应的列表和一个包含多个断言的列表。我们使用嵌套循环来遍历每个响应和断言,并进行断言检查。

以下是一个示例:

  1. # 发送HTTP请求
  2. urls = ["<http://example.com/api1>", "<http://example.com/api2>", "<http://example.com/api3>"]
  3. responses = [requests.get(url) for url in urls]
  4. # 定义断言
  5. assertions = [
  6. [
  7. {
  8. "jsonpath": "$.status",
  9. "expected_value": "success"
  10. },
  11. {
  12. "jsonpath": "$.data[0].id",
  13. "expected_value": 1
  14. }
  15. ],
  16. [
  17. {
  18. "jsonpath": "$.status",
  19. "expected_value": "success"
  20. },
  21. {
  22. "jsonpath": "$.data[0].name",
  23. "expected_value": "example"
  24. }
  25. ],
  26. [
  27. {
  28. "jsonpath": "$.status",
  29. "expected_value": "success"
  30. }
  31. ]
  32. ]
  33. # 使用断言函数
  34. assert_responses(responses, assertions)

在这个示例中,我们发送了三个GET请求到不同的URL,并获得了三个响应。然后,我们定义了三个断言列表,每个列表对应一个响应。我们可以通过调整断言列表来适应不同的测试场景。

通过完全封装的断言方法,我们可以更加灵活地进行多个响应的结果验证。

总结

Python中的断言封装主要涉及到了requests和jsonpath两个库的使用。通过这两个库,我们可以方便地发送HTTP请求,解析JSON数据,以及进行断言。希望这篇文章对于Python中断言封装的理解有所帮助。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【保证100%免费】

在这里插入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述
在这里插入图片描述在这里插入图片描述

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/791545
推荐阅读
相关标签
  

闽ICP备14008679号