python接口自动化_requests

get请求实战

get 无参数

ip:qa.yansl.com

端口:8080

请求方法: GET

请求地址:/prefrenceArea/listAll

请求数据:无

# 导入requests,发送各种各样的不同类型的http请求的第三方库

import requests

# 定义一个方法,函数名为test_no_parames,遵循pytest命名规范,命名规范以test_开头

def test_no_params():

    # 发送get类型的http请求,无参数,并赋值给r变量

    r = requests.get("GET", "http://qa.yansl.com:8080/prefrenceArea/listAll")

    # 输出打印r.文本信息

    print(r.text)

get 键值对数据(query)

ip:qa.yansl.com

端口:8080

请求方法: GET

请求地址:/order/list

请求数据:

keyvalue

pageSize5

pageNum1

第一种方法:

# 有参数,且参数跟在url后面,中间以?分割

# 定义一个方法,函数名为test_param_1,遵循pytest命名规范,命名规范以test_开头

def test_param_1():

    # 发送get类型的http请求,最后并赋值给r变量

    r = requests.request("GET", "http://qa.yansl.com:8080/order/list?pageSize=5&pageNum=1")

    # 输出打印r.文本信息

    print(r.text)

第二种方法:

# 有参数,且参数用params传参

# 定义一个方法,函数名为test_param_2,遵循pytest命名规范,命名规范以test_开头

def test_param_2():

    # 将参数存进一个字典中,赋值给para变量

    para = {'pageSize': 5, 'pageNum': 1}

    # 发送get类型的http请求,并赋值给r变量

    r = requests.request("GET", "http://qa.yansl.com:8080/order/list", params=para)

    # 输出打印r.文本信息

    print(r.text)

点击查看实例讲解

get path数据

ip:qa.yansl.com

端口:8080

请求方法: GET

请求地址:/order/{id}

请求数据:

keyvalue

id12

# 有参数,且参数用path传参

# 定义一个方法,函数名为test_path,遵循pytest命名规范,命名规范以test_开头

def test_path():

    # 将参数存进一个变量中,赋值给path变量

    path = 12

    # 发送get类型的http请求,将path参数化,用format函数格式化,并调用path变量

    r = requests.request("GET", "http://qa.yansl.com:8080/order/{}".format(path))

    # 输出打印r.文本信息

    print(r.text)

点击查看实例讲解

get 下载文件

ip:api.yansl.com

端口:8084

请求方法: GET

请求地址:/product/downRepertoryTemplate

请求数据:无

# 下载文件

# 定义一个方法,函数名为test_download,遵循pytest命名规范,命名规范以test_开头

def test_download():

    # 发送get类型的http请求,将path参数化,用format函数格式化,并调用path变量

    r = requests.request("GET", "http://qa.yansl.com:8084/product/downRepertoryTemplate")

    # r.content 获取响应正文中的原始数据 赋值给content变量

    content = r.content

    # 写入文件,文件名:"test.xls"  注意:打开模式必须是"wb"

    # w 的意思是写入的意思,b就是二进制的意思,加起来的意思就是写入二进制数据

    with open("test.xls", "wb")as f:

        # 写入数据

        f.write(content)


post请求实战

post 无参数

ip:qa.yansl.com

端口:8080

请求方法: POST

请求地址:/aliyun/oss/callback

请求数据:无

# post 无参数

def test_no_params():

    # 发送post类型的http请求,无参数,并赋值给r变量

    r = requests.request("POST", "http://qa.yansl.com:8080/aliyun/oss/callback")

    # 输出打印r.文本信息

    print(r.text)

post键值对(query)

ip:qa.yansl.com

端口:8080

请求方法: POST

请求地址:/admin/permission/update

请求数据:

keyvalue

adminId8

permissionIds1,2,4

# post键值对(query)

# 定义一个方法,函数名为test_param_2,遵循pytest命名规范,命名规范以test_开头

def test_post_param():

    # 将参数存进一个字典中,赋值给data变量

    data = {'permissionIds': [1, 2, 4], 'adminId': 8}

    # 发送post类型的http请求,并赋值给r变量

    # data:往请求正文中添加数据,如果入参格式为字典,会自动把字典类型的格式转换成键值对格式

    r = requests.request("POST", "http://qa.yansl.com:8080/admin/permission/update", data=data)

    # 输出打印r.文本信息

    print(r.text)

点击查看实例讲解

post json

ip:qa.yansl.com

端口:8080

请求方法: POST

请求地址:/admin/login

请求数据:

{

  "password": "123456",

  "username": "admin"

}

第一种方法:

# post json

# 定义一个方法,函数名为test_post_json,遵循pytest命名规范,命名规范以test_开头

def test_post_json():

    # 将json格式的参数存进json变量中

    json = {

        "password": "123456",

        "username": "admin"

    }

    # 发送post类型的http请求,并赋值给r变量

    # json:传入json格式的参数

    r = requests.request("POST", "http://qa.yansl.com:8080/admin/login", json=json)

    # 输出打印r.文本信息

    print(r.text)

第二种方法:

# post json data headers 传参

# 定义一个方法,函数名为test_post_json2,遵循pytest命名规范,命名规范以test_开头

def test_post_json2():

    # 将json格式的参数存进data变量中

    data = '''

    {

        "password": "123456",

        "username": "admin"

    }

    '''

    headers = {

        "content-type": "application/json"

    }

    # 发送post类型的http请求,并赋值给r变量

    # data:往请求正文中添加数据,如果入参格式为字符串格式,不会对数据做任何修改

    # 传入指定的请求头参数:"content-type":"application/json"

    r = requests.request("POST", "http://qa.yansl.com:8080/admin/login", data=data, headers=headers)

    # 输出打印r.文本信息

    print(r.text)

点击查看实例讲解

post path参数

ip:qa.yansl.com

端口:8080

请求方法: POST

请求地址:/admin/delete/{id}

请求数据:

parametervalue

id7

# post path 有参数,且参数用path传参

# 定义一个方法,函数名为test_post_path,遵循pytest命名规范,命名规范以test_开头

def test_post_path():

    # 将参数存进一个变量中,赋值给path变量

    path = 6

    # 发送post类型的http请求,将path参数化,用format函数格式化,并调用path变量

    r = requests.request("GET", "http://qa.yansl.com:8080/admin/delete/{}".format(path))

    # 输出打印r.文本信息

    print(r.text)

点击查看实例讲解

post xml参数

ip:192.168.1.128

端口:5050

请求方法: POST

请求地址:/signup/xmlDemo

请求数据:

xm123

xh456

点击查看实例讲解

post string字符串

ip:192.168.1.128

端口:5050

请求方法: POST

请求地址:/signup/stringDemo

请求数据:

hello world

点击查看实例讲解

post 上传文件

ip:api.yansl.com

端口:8084

请求方法: POST

请求地址:/product/uploaProdRepertory

请求数据:任意excel文件

# 上传文件

def test_upload():

    # rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

    with open("test1.xls","rb")as f:

        # 将获取的文件内容 存到一个字典中,并且赋值file变量

        file = {"file":f}

        # 发送post请求,上传文件,files

        r = requests.request("POST", "http://qa.yansl.com:8084/product/uploaProdRepertory",files=file)

        # 输出打印r.文本信息

        print(r.text)

with open() as f的用法

r: 以只读方式打开文件。文件的指针将会放在文件的开头。这是**默认模式**。

rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

r+: 打开一个文件用于读写。文件指针将会放在文件的开头。

rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

w: 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb: 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

w+: 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a: 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab: 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+: 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用

点击查看实例讲解

总结:

"""

发送请求 requests.request()

两个位置参数:

method:请求方法 全大写 例如:POST GET PUT

url:http://ip:port/请求地址

n个关键字参数

params:往url中添加键值对类型的数据,入参为字典格式

data:往请求正文中添加数据。

    1、若入参格式为字典,会自动把字典类型数据转成键值对格式

    2、如果入参格式为字符串,不会对数据做任何修改

json:往请求正文中添加json字符串数据,

    1、把字典类型数据转换成json字符串类型

    2、把json字符串存入请求正文中

    3、请求头中添加content-type:application/json

headers:往请求头中添加数据,入参为字典格式

files:上出文件,入参格式为字典类型,字典值要求必须是一个以rb模式打开的文件

获取响应信息

获取响应正文内容:

r.text 获取编码后的文本

r.content 获取原始数据

"""


获取请求响应信息

import requests

def test_json_2():

    da = '''

    {

  "password": "123456",

  "username": "admin"

}

    '''

    head = {"content-type":"application/json"}

    r = requests.request("POST", "http://qa.yansl.com:8080/admin/login",data=da,headers=head)

    print(r.text)

    #  请求信息

    # 1、url

    print(r.request.url)

    # 2、请求方法

    print(r.request.method)

    # 3、请求头

    print(r.request.headers)

    # 4、请求正文

    print(r.request.body)

    # 获取响应信息

    # 1、响应状态码

    print(r.status_code)

    # 2、响应头

    print(r.headers)

    # 3、响应正文

    print(r.text) # 编码后的文本

    print(r.content) # 原始数据

    print(r.json()) # 字典格式

你可能感兴趣的:(python接口自动化_requests)