既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
* **列表相等断言**:检查两个列表是否相等。
assert actual_list == expected_list
* **字典相等断言**:检查两个字典是否相等。
assert actual_dict == expected_dict
* **正则表达式匹配断言**:检查一个字符串是否匹配给定的正则表达式。
import re
assert re.match(pattern, string)
* **空值断言**:检查一个值是否为 `None`。
assert value is None
* **非空值断言**:检查一个值是否不为 `None`。
assert value is not None
* **布尔值断言**:检查一个值是否为 `True` 或 `False`。
assert boolean_expression
* **空容器断言**:检查一个列表、集合或字典是否为空。
assert not container # 检查容器是否为空
* **包含子集断言**:检查一个集合是否包含另一个集合作为子集。
assert subset <= full_set
* **字符串开头或结尾断言**:检查一个字符串是否以指定的前缀或后缀开头或结尾。
assert string.startswith(prefix)assert string.endswith(suffix)
* **数量断言**:检查一个列表、集合或其他可迭代对象的元素数量。
assert len(iterable) == expected_length
* **范围断言**:检查一个值是否在指定的范围内。
assert lower_bound <= value <= upper_bound
* **文件存在断言**:检查文件是否存在。
import os
assert os.path.exists(file_path)
以上是一些 Pytest 常用的断言,但根据具体的测试需求,您可能会使用其他断言或结合多个断言来更全面地验证测试结果。详细的断言文档可以在 Pytest 官方网站找到:Pytest - Built-in fixtures, marks, and nodes
#### 数据驱动
在 API 自动化测试的过程中。使用数据驱动是一种常规测试方法,其中测试用例的输入数据和预期输出数据都被存储在数据文件中,测试框架根据这些数据文件执行多次测试,以验证 API 的各个方面。
测试数据可以很容易地修改,而不需要修改测试用例代码。
数据驱动测试可以帮助你有效地覆盖多种情况,确保 API 在各种输入数据下都能正常运行。
可参考 demo:https://github.com/Automation-Test-Starter/Pytest-API-Test-Demo
##### 新建测试配置文件
>
> 配置文件会以 json 格式存储为例,其他格式如 YAML、CSV 等类似,均可参考
>
>
>
// 新建测试配置文件夹mkdir config// 新建测试配置文件cd configtouch config.json
##### 编写测试配置文件
配置文件存储测试环境的配置信息,如测试环境的 URL、数据库连接信息等。
demo 中的测试配置文件内容如下:
* 配置 host 信息
* 配置 getAPI 接口信息
* 配置 postAPI 接口信息
{ “host”: “https://jsonplaceholder.typicode.com”, “getAPI”: “/posts/1”, “postAPI”:“/posts”}
##### 新建测试数据文件
请求数据文件和响应数据文件分别存储测试用例的请求数据和预期响应数据。
// 新建测试数据文件夹mkdir data// 进入测试数据文件夹cd data// 新建请求数据文件touch request_data.json// 新建响应数据文件touch response_data.json
##### 编写测试数据文件
* 编写请求数据文件
>
> 请求数据文件中配置了 getAPI 接口的请求数据和 postAPI 接口的请求数据
>
>
>
{ “getAPI”: “”, “postAPI”:{ “title”: “foo”, “body”: “bar”, “userId”: 1 }}
* 编写响应数据文件
>
> 请求数据文件中配置了 getAPI 接口的响应数据和 postAPI 接口的响应数据
>
>
>
{ “getAPI”: { “userId”: 1, “id”: 1, “title”: “sunt aut facere repellat provident occaecati excepturi optio reprehenderit”, “body”: “quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto” }, “postAPI”:{ “title”: “foo”, “body”: “bar”, “userId”: 1, “id”: 101 }}
##### 更新测试用例来支持数据驱动
>
> 为做区分,这里新建测试用例文件,文件名为 test\_demo\_data\_driving.py
>
>
>
import requestsimport json
从配置文件夹获取测试配置with open(“config/config.json”, “r”) as json_file: config = json.load(json_file)
从测试数据文件夹获取接口请求数据with open(‘data/request_data.json’, ‘r’) as json_file: request_data = json.load(json_file)
从测试数据文件夹获取接口响应数据with open(‘data/response_data.json’, ‘r’) as json_file: response_data = json.load(json_file)
class TestPytestDemo:
def test_get_demo(self): host = config.get(“host”) get_api = config.get(“getAPI”) get_api_response_data = response_data.get(“getAPI”) # 发起请求 response = requests.get(host+get_api) # 断言 assert response.status_code == 200 assert response.json() == get_api_response_data
def test_post_demo(self): host = config.get(“host”) post_api = config.get(“postAPI”) post_api_request_data = request_data.get(“postAPI”) post_api_response_data = response_data.get(“postAPI”) # 发起请求 response = requests.post(host + post_api, post_api_request_data) # 断言 assert response.status_code == 201 assert response.json() == post_api_response_data
##### 运行该测试用例确认数据驱动是否生效
>
![img](https://img-blog.csdnimg.cn/img_convert/63de5834261584b3cb9cfdc181fbe3ec.png)
![img](https://img-blog.csdnimg.cn/img_convert/bf1b60ff20afdc3087f7cd9f66b12916.png)
![img](https://img-blog.csdnimg.cn/img_convert/9f81dc7af5b4eebe8e2b08fc4c40b481.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618608311)**
005343220)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618608311)**