pytest进阶参数化用法05:使用yaml进行接口实战

1、编写data.yam存放请求参数l。

以下展示两种写法:

2、新创建一个read_data文件,存放编写调用data.yaml的read_data()。并用get_data接收read_data()的返回。

path的路径参考pytest进阶参数化用法04。

3、主程序文件test_yaml_mobile调用read_data文件中的get_data。

test_yaml_mobile的目录位置:

import pytest
import requests

from utils.read_data import get_data


@pytest.mark.parametrize("param", get_data['mobile_belong_get'])
def test_mobile_get(param):
    r = requests.get('https://api.binstd.com/shouji/query', params=param)
    print(r.json())
    print(r.status_code)
    assert r.status_code == 200
    result = r.json()
    assert result['status'] == 0
    assert result['msg'] == 'ok'
    assert result['result']['shouji'] == '13456755448'
    assert result['result']['province'] == '浙江'
    assert result['result']['company'] == '中国移动'
    assert result['result']['cardtype'] is None
    assert result['result']['areacode'] == '0571'


@pytest.mark.parametrize("mobile,appkey", get_data['mobile_post01'])
def test_mobile_post(mobile, appkey):
    r = requests.post('https://api.binstd.com/shouji/query', params={
        "shouji": mobile,
        "appkey": appkey
    })
    print(r.json())
    print(r.status_code)
    assert r.status_code == 200
    result = r.json()
    assert result['status'] == 0
    assert result['msg'] == 'ok'
    assert result['result']['shouji'] == '13456755448'
    assert result['result']['province'] == '浙江'
    assert result['result']['company'] == '中国移动'
    assert result['result']['cardtype'] is None
    assert result['result']['areacode'] == '0571'

至此,基于data.yaml文件中的传参数据有两组,只有一组正确。则以上两个方法均为一个pass,一个faild。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值