008、【前程贷—简化版,实战 02】 requets 二次封装后 ,用pytest参数化测试用例

 

在上一节 (007、【前程贷—简化版,实战 02】 封装 requets ,便于 用pytest的参数化 (或者 ddt ) )   已经对 requests 进行了二次封装 ,本节主要演示用 pytest 实现参数化。

 

a、项目层级结构如下:

008、【前程贷—简化版,实战  02】  requets 二次封装后 ,用pytest参数化测试用例

 

b、my_requests.py  代码如下:

# -*- coding:utf-8 -*-
# Author:  Sky
# Email:   2780619724@qq.com
import requests


class MyRequests:

    def __init__(self):
        """
        初始化方法,初始化请求头;
        """
        self.headers = {"X-Lemonban-Media-Type": "lemonban.v2"}

    # 方法 post/put...  json=xxx, get方法用 params=xxx
    def send_reuqests(self, method, url, req_data, token=None):
        """
        调用requests库里面的方法去发起请求,并得到响应结果;
        :param url: 接口url
        :param method: 请求方法,get,psot
        :param req_data: 请求数据
        :param token: 如果有token,添加token
        """

        # 如果有token,添加token
        self.__del_header(token)

        # 注意 request() 方法是不带s的,requests库是带s的;
        if method.upper() == "GET":
            resp = requests.request(method, url, params=req_data, headers=self.headers)
            return resp
        if method.upper() == "POST":
            # 为了便于学习,简单的认为就是用 json 格式传;
            resp = requests.request(method, url, json=req_data, headers=self.headers)
            return resp

    def __del_header(self, token=None):
        """
        如果有token,添加token处理
        :param token: 如果有token,添加token处理
        """
        if token:
            self.headers["Authorization"] = f"Bearer {token}"

 

c、test_my_requests.py  代码如下:

import my_requests
import pytest

cases = [
        {"method": "POST",
         "url": "http://api.lemonban.com/futureloan/member/register",
         "req_data": {"mobile_phone": "15161886677","pwd": "12345678"}},
        {"method": "POST",
         "url": "http://api.lemonban.com/futureloan/member/login",
         "req_data": {"mobile_phone": "15161886677","pwd": "12345678"}},
        {"method": "POST",
         "url": "http://api.lemonban.com/futureloan/member/recharge",
         "req_data":  {"member_id": None, "amount": "1000"}}
    ]

mrq = my_requests.MyRequests()


# pytest.mark.parametrize("item", cases) 中的 "item" 必须 和 def test_my_requests(item): 中的item 名字一样
@pytest.mark.parametrize("item", cases)
def test_my_requests(item):
    resp = mrq.send_reuqests(item[method], item[url], item[req_data])
    print(resp.json())

 

执行结果如下:

008、【前程贷—简化版,实战  02】  requets 二次封装后 ,用pytest参数化测试用例

 

008、【前程贷—简化版,实战 02】 requets 二次封装后 ,用pytest参数化测试用例

上一篇:激活函数


下一篇:链表的快慢指针