pytest文档73-pytest+yaml实现接口自动化框架之用例参数关联

前言

使用 yaml 文件写测试用例的时候,如何在 yaml 文件的测试用例里面实现参数关联? 这是很多做自动化测试的小伙伴经常思考的一个问题。
接着前面的pytest+yaml 文件实现接口自动化框架,本篇使用环境变量的方式,让测试用例参数关联。
实现场景:上个接口返回的接口提取变量,在写个接口中引用变量

场景案例

我现在有一个登陆接口A,登陆成功后返回一个token值。有一个获取用户信息的接口B,但是接口B必须要先登录后传登录的token才能访问
A接口登录接口文档基本信息

  • 访问地址:http://127.0.0.1:8000/api/v1/login/
  • 请求类型:POST
  • 请求头部:application/json
  • 请求参数:{“username”:“test”, “password”:“123456”}

B接口获取绑定卡号的接口文档基本信息

  • 访问地址:http://127.0.0.1:8000/api/v1/userinfo/
  • 请求类型:GET
  • 请求头部:Content-Type: application/json
  • 请求头部token参数: Authorization: Token xxxxx login token xxxxx
pytest结合YAML和hooks可以提供更灵活的方式来管理复杂的接口自动化测试用YAML是一种人类可读的数据序列化语言,便于书写和存储测试配置信息。而hooks则是pytest内部的一种机制,允许自定义测试流程。 以下是一个基本的步骤: 1. 配置结构:使用YAML来定义测试案和相关配置,如在一个名为`test_cases.yaml`的文件中: ```yaml - name: Get User Info request: method: GET url: http://example.com/api/user/1 expected_response: status_code: 200 json_fields: id: 1 name: John Doe - name: Post Comment request: method: POST url: http://example.com/api/comment headers: Authorization: Bearer your_token data: content: Test comment ``` 2. 配置解析:使用第三方库如PyYAML来加载并解析YAML文件: ```python import yaml with open('test_cases.yaml', 'r') as file: test_cases = yaml.safe_load(file) ``` 3. Hooks编写:定义一个hook来处理这些测试用如`pytest_runtest_protocol`: ```python def pytest_runtest_protocol(item, nextitem): for case in test_cases: request_info = case['request'] # 实现实际的HTTP请求,并将期望结果与实际响应进行比较 response = make_http_request(**request_info) assert validate_response(response, case['expected_response']) ``` 4. 自定义函数:`make_http_request` 和 `validate_response`是你需要自己实现的函数,分别负责发送HTTP请求和验证响应。 5. 执行测试:运行pytest,它会按照YAML文件中的用顺序执行测试: ```bash pytest -s ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值