【保姆级的队列】让你自动化测试代码敲起来如同切西瓜!pytest和yaml强势助攻请求关联封装!


接口自动化测试是现代Web开发中不可避免的环节之一。其中,pytest和yaml是比较常用的工具,用于协助进行自动化测试;同时,请求和关联封装是测试中常见的技巧之一,可以使测试用例编写更加简洁高效。本文将深入介绍pytest+yaml的使用以及请求和关联封装技巧,并通过Python代码进行演示。

一、pytest+yaml的使用

pytest是一种基于Python的测试框架,用于编写和运行各种类型的测试,包括单元测试和功能测试等。而yaml(Yet Another Markup Language)则是一种轻量级的数据序列化格式,可以用于存储测试用例数据。

我们可以将测试用例数据存放在yaml文件中,pytest可以直接读取yaml文件中的数据进行测试。如下述代码:

import pytest
import requests
import yaml

def test_login():
    with open('test_data.yaml', 'r', encoding='utf-8') as f:
        test_data = yaml.load(f, Loader=yaml.FullLoader)
    for data in test_data:
        resp = requests.post(data['url'], data['data'])
        assert resp.status_code == data['status_code']
其中,test_data.yaml文件内容如下:

- url: "http://example.com/login"
  data:
    username: "admin"
    password: "123456"
  status_code: 200
- url: "http://example.com/login"
  data:
    username: "admin"
    password: "123"
  status_code: 401
以上代码中,我们使用pytest框架读取yaml文件中的数据进行测试,可以大大简化测试用例编写的工作量。

二、请求和关联封装

在实际测试中,我们经常遇到一个接口返回需要作为下一个请求的参数使用。这时,我们可以使用请求和关联封装技巧,将之前的请求返回结果保存下来,然后在下一个请求中使用。

下面是一个简单的登录操作流程,其中第一个请求返回了token值,需要在下一个请求中作为参数使用:

import requests

def test_login():
    # 登录
    resp1 = requests.post('http://example.com/login', json={
        'username': 'test',
        'password': 'test'
    })
    token = resp1.json()['token']

    # 获取用户信息
    resp2 = requests.get('http://example.com/user', headers={
        'Authorization': 'Bearer {}'.format(token)
    })
    assert resp2.status_code == 200
以上代码中,我们使用Requests库发送登录请求并获取返回的token;然后,在下一个请求中将token作为Authorization请求头附加到请求中。通过这种方式,我们可以方便地完成关联封装。

对于多次请求需要关联的情况,我们可以将其封装成一个函数,在函数中保存返回值,在后续的请求中直接调用即可。如下所示:

import requests

def login():
    resp = requests.post('http://example.com/login', json={
        'username': 'test',
        'password': 'test'
    })
    return resp.json()['token']

def get_user_info(token):
    resp = requests.get('http://example.com/user', headers={
        'Authorization': 'Bearer {}'.format(token)
    })
    return resp.json()

def test_login():
    # 登录
    token = login()

    # 获取用户信息
    user_info = get_user_info(token)
    assert user_info['username'] == 'test'
通过封装login和get_user_info函数,我们可以方便地关联请求结果,使测试用例更加清晰和简洁。

总结:

本文介绍了pytest+yaml的使用以及请求和关联封装技巧,通过Python代码进行演示。应用这些技巧可以提高测试用例的编写效率,帮助测试人员更好地完成测试工作,保障Web应用的质量和安全。

  【软件测试到测试开发全测试生涯学习路线】:【以下路线图太详细了只能展开部分,具体的可以在文章末尾扫描小卡片备注000领取哦】

1:自动化测试进阶系列:

2:全栈性能测试,监控以及调优

3:全栈测试开发平台实战

4:全栈安全测试渗透测试

5:devops持续集成部署

6:全栈接口测试工具进阶

7:跨平台自动化测试工具

8:大厂简历,真题,录音

9:全栈系列课企业项目实战

学完这整套教程,拿下大厂30k到50k不是问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值