【pytest】七、pytest之parametrize结合yaml实现接口自动化

1、使用requests模块,进行接口自动化,requests有必要自己封装的;

        请求方式有多种,但我们一般用session的方式

request使用session的方法去连接,可以做cookie的关联;

用session发请求,会自动关联cookie,所以一般用这种方式去发送请求;

from common.common_util import CommonUtil

import pytest

from common.yaml_util import read_yaml
import requests

class TestLogin(CommonUtil):

    # request使用session的方法去连接,可以做cookie的关联;
    # 用session发请求,会自动关联cookie,所以一般用这种方式去发送请求;
    # requests.session(),是一个方法,定义在这个类中,传给session变量
    # 下面的login防范中,用TestLogin.session来调用这个方法
    session = requests.session()


    #通过key去提取value,如caseinfo['request']['method'],提取method的值
    @pytest.mark.parametrize('caseinfo',read_yaml('testcase/login.yaml'))
    def test_login_01(self,caseinfo):
        print("\n测试01号登录成功")
        print(caseinfo)
        name = caseinfo['name']
        method = caseinfo['request']['method']
        url = caseinfo['request']['url']
        data = caseinfo['request']['data']
        header= caseinfo['request']['headers']
        validate = caseinfo['validate']

        # 将caseinfo中的数据,传到request中,其中数据有params,data,json三种格式;
        # 当请求方式是:get,数据格式用params
        # 当请求方式是:post,数据格式用data,json
        # 发送请求后,会得到一个响应,存到res变量中
        res = TestLogin.session.request(method= method, url=url,headers=header, data=data)
        print(res.json())
        assert 'message' in res.json()

猜你喜欢

转载自blog.csdn.net/Moonlight_16/article/details/128970264
今日推荐