【python做接口测试的学习记录day3——使用yaml进行参数化实现接口自动化】

这里以登录接口为例,老规矩

第一步还是安装

这里我们用的框架为pytest,因此安装:

pip install pytest

pip install pyyaml 注意:yaml的包是pyyaml

第二步准备数据

安装好之后呢,我们就可以开始啦,在项目下新建一个名为data的包,然后在data中创建一个user.yaml的文件(后缀名也可以是yml),在文件中存入我们的参数,像这样:

YAML支持三种数据结构:对象、数组、纯量

这里我们把登录接口的用例参数使用数组写入,使用一个短横线-加一个空格 代表一个数组项,有疑问的可以学习一下yaml的格式

这样数据就准备好了

第三步封装读取yaml数据

我们在在项目下建个包,名称:load_data,在包下新建一个yaml_load.py,这里我们直接上代码:

import yaml

# yaml格式的数据读取
def load(path):
    file = open(path,'r',encoding='utf-8')
    data = yaml.load(file,Loader=yaml.FullLoader)
    return data

第四步登录接口自动化

新建包:pytest_case,在包下新建test_config.py,这里的代码就是接口测试的代码了,这里将读取的yaml数据赋值给user变量,然后将user作为参数调用,如下:

import pytest
import requests
import yaml
from load_data import yaml_load


@pytest.mark.parametrize('user',yaml_load.load('../data/user.yaml'))
def test_01(user):
    url_login = "https://****"
    headers = {'Content-Type': 'application/json'}
    print(user)
    response1 = requests.request("POST", url=url_login, headers=headers, json=user)
    print(response1.text)

if __name__ == '__main__':   # pytest运行模式
   pytest.main('-v','-s')

然后成功运行,结果如下:

当然你还可以为之加上断言

第五步加入断言

在加入断言之前我们需要对YAML数据进行升级

-
  user:
    'account': '***'
    'password': '014f4041514bc5dcb82845fe5efa3c54'
    'project': 'DEFAULT'
    'teacherLogin': False
    'clientId': '1'
    'secret': '***'
  msg: 成功
-
  user:
    "account": "****"
    "password": "123456"
    "project": "DEFAULT"
    "teacherLogin": false
    "clientId": "1"
    "secret": "**"
  msg: 账号或密码不正确!
-
  user:
    "account": "*****"
    "password": ""
    "project": "DEFAULT"
    "teacherLogin": false
    "clientId": "1"
    "secret": "***"
  msg: 密码不能为空;
-
  user:
    "account": ""
    "password": "014f4041514bc5dcb82845fe5efa3c54"
    "project": "DEFAULT"
    "teacherLogin": false
    "clientId": "1"
    "secret": "**"
  msg: 账号不能为空;

这里我们使用对象将参数与返回的预期结果写入yaml,然后再对接口代码这里做一些修改:

import pytest
import requests
import yaml
import json
from load_data import yaml_load


@pytest.mark.parametrize('data',yaml_load.load('../data/user.yaml'))  #这里将读取的数据赋值给data
def test_01(data):   #将data作为参数
    url_login = "https://*****"
    headers = {'Content-Type': 'application/json'}
    response1 = requests.request("POST", url=url_login, headers=headers, json=data['user']) #将data中的user对象数据传入接口
    msg=json.loads(response1.text)['message'] #提取接口返回的message
    # assert data['msg'] == msg      #断言,将返回的message与预期msg作比较,一致则通过,不一致就会失败

if __name__ == '__main__':   # pytest运行模式
   pytest.main('-v','-s')

最后附上运行结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小丫么小二郎~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值