pytest + yaml 框架 -59.用例失败重跑机制pytest-rerunfailures

前言

有些接口可能不太稳定,第一次跑的时候由于网络原因或者其它原因失败,但是重新跑2次又成功了。
对于这种需要重新跑几次的场景,可以使用用例失败重跑机制,需安装pytest-rerunfailures 插件。

场景示例

失败重跑需要依赖 pytest-rerunfailures 插件,使用 pip 安装就行

pip install pytest-rerunfailures

关于reruns参数的2个用法

re-run failing tests to eliminate flaky failures:
  --reruns=RERUNS       number of times to re-run failed tests. defaults to 0.
  --reruns-delay=RERUNS_DELAY
                        add time (seconds) delay between reruns.

以下示例,故意让第二个用例失败test_demo.yml

test_get_demo:
  name
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 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值