5.pytest之结合requests库实现接口自动化

1.requests简介

  • requests用来发送http请求以及接收http响应的python第三方库,主要用于接口自动化测试。
  • 安装:pip install requests

2.requests库常用的方法:

  • requests.get() # 发送get请求
  • requests.post() # 发生post请求
  • requests.put() # 发送put请求
  • requests.delete() # 发送delete请求
  • requests.request() # 发送所有类型的请求(get、post、put、delete等)
(1)不管是get、post、put、delete等方法,都是调用requests.request方法。
(2)requests.request方法调用session.request方法
(3)session.request的请求参数
  • method 请求方法:get、post、put、delete等
  • url 请求路径
  • params=None get请求方式传参
  • data=None post请求方式传参
  • json=None post请求方式传参
  • hearder=None 请求头
  • cookies=None请求cookies
  • files=None 上传文件

3.requests请求返回的响应response对象

  • response.json() # 返回字典格式的数据
  • response.text # 返回字符串格式的数据
  • response.content # 返回bytes字节类型的数据
  • response.staus_code # 返回响应状态码
  • response.reason # 返回状态信息
  • response.cookies # 返回cookies信息
  • response.headers # 返回响应头
  • response.request.xxx# 返回请求的数据信息,如:请求投、请求路径等

4.request各种请求演示

(1)requests.get(url, params=None, **kwargs): requests发送get请求
import pytest
import requests

class TestUser:
    def test_get_user(self):
        url = "http://IP/api/v1/users/users/"
        headers = {
           "Authorization": "bearer token信息"
        }
        res = requests.get(url, headers=headers)
        print("获取所有用户数据:", res.json())

if __name__ == "__main__":
    pytest.main()

在这里插入图片描述

  • requests.get()参数:url, params=None, **kwargs
    • url 请求路径
    • params, get请求参数
    • **kwargs 其他参数,包括headers、cookies等
  • requests.get() 调用requests.request(“get”, url, params=params, **kwargs)方法
    在这里插入图片描述
(2)requests.post(url, data=None, json=None, **kwargs): requests发送post请求
import pytest
import requests

class TestUser:

    def test_post_user(self):
        url = "http://ip/api/v1/users/users/"
        headers = {
            "Authorization": "bearer token信息",
            "Content-Type": "application/json"
        }
        datas = {
            "name": "test_user_system_common_role_user_name",
            "username": "test_user_system_common_role_user_username",
            "email": "test_user_system_common_role_user_email@qq.com",
            "password_strategy": "custom",
            "password": "testpassword",
            "system_roles": [
                "00000000-0000-0000-0000-000000000003"
            ],
            "org_roles": [
                "00000000-0000-0000-0000-000000000007"
            ]
        }
        res = requests.post(url, headers=headers, json=datas)
        print("创建普通用户:", res.json())

if __name__ == "__main__":
    pytest.main()

在这里插入图片描述

  • requests.post()参数:url, data=None, json=None, **kwargs
    • url 请求路径
    • data, post请求参数
    • json, post请求参数
    • **kwargs 其他参数,包括headers、cookies等
  • requests.post() 调用:requests.request(“post”, url, data=data, json=json, **kwargs)
    在这里插入图片描述
(3)requests.put(url, data=None, **kwargs): requests发送put请求
import pytest
import requests

class TestUser:
  
    def test_put_user(self):
        url = "http://IP/api/v1/users/users/9752fbbf-eb87-要更新的用户的ID/"
        headers = {
            "Authorization": "bearer token信息",
            "Content-Type": "application/json"
        }
        datas = {
            "name": "test_put_name",
            "username": "test_put_username",
            "email": "test_put_email@qq.com",
            "password_strategy": "custom",
            "password": "test_put_password",
            "system_roles": [
                "00000000-0000-0000-0000-000000000003"
            ],
            "org_roles": [
                "00000000-0000-0000-0000-000000000007"
            ]
        }
        res = requests.put(url, headers=headers, json=datas)
        print("更新用户:", res.json())

在这里插入图片描述

  • requests.put()参数:url, data=None, **kwargs
    • url 请求路径
    • data, put请求参数
    • json, put请求参数
    • **kwargs 其他参数,包括headers、cookies等
  • requests.post() 调用:requests.request(“put”, url, data=data, **kwargs)
    在这里插入图片描述
(4)requests.delete(url, **kwargs): requests发送put请求

在这里插入图片描述

  • requests.delete()参数:url, **kwargs
    • url 请求路径
    • **kwargs 其他参数,包括headers、cookies等
  • requests.delete() 调用:requests.request(“delete”, url, **kwargs)
    在这里插入图片描述
(5)requests.request(method, url, **kwargs): requests.request发送任何请求
  • requests.request发送get请求
    在这里插入图片描述
  • requests.request发送post请求

在这里插入图片描述

  • requests.request发送put请求
    在这里插入图片描述

  • requests.request发送delete请求
    在这里插入图片描述

  • requests.request调用的是session.request(method=method, url=url, **kwargs)方法

def request(method, url, **kwargs):
    with sessions.Session() as session:
        return session.request(method=method, url=url, **kwargs)


# method请求方法:get、post、put、delete等方法
# url 请求路径
# **kwargs 请求参数:
       - params=None, #get请求传参
       - data=None, #post请求传参
       - json=None, #post请求传参
       - headers=None, #请求头信息
       - cookies=None, # 请求cookies
       - files=None, #文件上传
       -  auth=None,
       - timeout=None,
       - allow_redirects=True,
       - proxies=None,
       - hooks=None,
       - stream=None,
       - verify=None,
       - cert=None,
      

5.pytest之结合requests库实现接口自动化

import pytest
import requests

from yaml_util import clear_yaml, write_yaml, read_yaml


class TestUser:

    def test_get_user(self):
        method = "get"
        url = "http://IP/api/v1/users/users/"
        headers = {
            "Authorization": "bearer token信息"
        }
        res = requests.request(method, url, headers=headers)
        print("获取所有用户数据:", res.json())

    def test_post_user(self):
        method = "post"
        url = "http://IP/api/v1/users/users/"
        headers = {
            "Authorization": "bearer token信息",
            "Content-Type": "application/json"
        }
        datas = {
            "name": "test_user_system_common_role_user_name",
            "username": "test_user_system_common_role_user_username",
            "email": "test_user_system_common_role_user_email@qq.com",
            "password_strategy": "custom",
            "password": "testpassword",
            "system_roles": [
                "00000000-0000-0000-0000-000000000003"
            ],
            "org_roles": [
                "00000000-0000-0000-0000-000000000007"
            ]
        }
        res = requests.request(method, url, headers=headers, json=datas)
        if "id" in res.json().keys():
            data = {
                "test_user_system_common_role_user_id": res.json()['id']
            }
            clear_yaml()
            write_yaml(data)
        print("创建普通用户:", res.json())

    def test_put_user(self):
        extract_obj = read_yaml("/extract.yaml")
        user_id = extract_obj.get("test_user_system_common_role_user_id")
        method = "put"
        url = "http://IP/api/v1/users/users/" + user_id + "/"
        headers = {
            "Authorization": "bearer token信息",
            "Content-Type": "application/json"
        }
        datas = {
            "name": "test_put_name",
            "username": "test_put_username",
            "email": "test_put_email@qq.com",
            "password_strategy": "custom",
            "password": "test_put_password",
            "system_roles": [
                "00000000-0000-0000-0000-000000000003"
            ],
            "org_roles": [
                "00000000-0000-0000-0000-000000000007"
            ]
        }
        res = requests.request(method, url, headers=headers, json=datas)
        print("更新用户:", res.json())

    def test_delete_user(self):
        extract_obj = read_yaml("/extract.yaml")
        user_id = extract_obj.get("test_user_system_common_role_user_id")
        method = "delete"
        url = "http://IP/api/v1/users/users/" + user_id + "/"
        headers = {
            "Authorization": "bearer token信息",
        }
        res = requests.request(method, url, headers=headers)
        print("删除用户返回的状态码:", res.status_code)


if __name__ == "__main__":
    pytest.main()

在这里插入图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值