python接口自动化参数化_python接口自动化8-参数化

前言

前面一篇实现了参数的关联,那种只是记流水账的完成功能,不便于维护,也没什么可读性,接下来这篇可以把每一个动作写成一个函数,这样更方便了。

参数化的思维只需记住一点:不要写死

一、登录函数

1.s参数是session的一个实例类,先放这里,方便写后面代码

2.登录函数传三个参数,s是需要调用前面的session类,所以必传,可以传个登录的url,然后payload是账号和密码

+b2Za4AZe0sMAPwFbvaOS3mGm5NhrhclwwAArCfDAAAAkcgwAABAJDIMAAAQiQwDAABEIsMAAACRyDAAAEAkMgwAABCJDAMAAEQiwwAAAJHIMAAAQCQyDAAAEIkMAwAARCLDAAAAkcgwAABAJDIMAAAQiQwDAABEIsMAAACRyDAAAEAkMgwAABCJDAMAAEQiwwAAAJHIMAAAQCQyDAAAEIkMAwAARCLDAAAAkcgwAABAJDIMAAAQiQwDAABEIsMAAACRPLy7qbIss08eXh4eXm58FQAA4M2SYQAAgEh+AmNzybsn2fQpAAAAAElFTkSuQmCC

二、保存草稿

1.编辑内容的标题title和正文body_data参数化了,这样后面可以方便传不同值

2.这里返回了获取到新的url地址,因为后面的postid参数需要在这里提取

Q0Vs4e8i674XvlmMYgr2AZ5113tY4bJJwAAAOigtc4eAAAAABrTxHPNySEAAAAAyB4AAAAAmkD2AAAAANAEsgcAAACAJpA9AAAAADSB7AEAAACgCWQPAAAAAE0gewAAAABoAtkDAAAAQBPIHgAAAACaQPYAAAAA0ASyBwAAAIAmkD0AAAAANIHsAQAAAKAJZA8AAAAATSB7AAAAAGgC2QMAAABAE8geAAAAAJpA9gAAAADQBLIHAAAAgCaQPQAAAAA0gewBAAAAoAlkDwAAAABNIHsAAAAAaALZAwAAAEATyB4AAAAAmkD2AAAAANAEsgcAAACAJpA9AAAAADSB7AEAAACgCWQPAAAAAE0gewAAAABoAtkDAAAAQBPIHgAAAACa8P8DMUGh3ttkkaoAAAAASUVORK5CYII=

三、提取postid

1.这里用正则表达式提取url里面的postid

AxCCYSznPwu+AAAAAElFTkSuQmCC

四、删除草稿

1.传个url和postid就可以了

nNqcFb79J2AAAAAASUVORK5CYII=

五、参考代码:

# coding:utf-8

import requests

def login(s, url, payload):

‘‘‘登录‘‘‘

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",

"Accept": "application/json, text/javascript, */*; q=0.01",

"Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",

"Accept-Encoding": "gzip, deflate, br",

"Content-Type": "application/json; charset=utf-8",

"X-Requested-With": "XMLHttpRequest",

"Content-Length": "385",

"Cookie": "xxx已省略",

"Connection": "keep-alive"

}

r = s.post(url, json=payload, headers=headers, verify=False)

result = r.json()

print result

return result[‘success‘] # 返回True或False

def save_box(s, url2, title, body_data):

‘‘‘# 获取报存之后url地址‘‘‘

body = {"__VIEWSTATE": "",

"__VIEWSTATEGENERATOR": "FE27D343",

"Editor$Edit$txbTitle": title,

"Editor$Edit$EditorBody": "

"+body_data+"

",

"Editor$Edit$Advanced$ckbPublished": "on",

"Editor$Edit$Advanced$chkDisplayHomePage": "on",

"Editor$Edit$Advanced$chkComments": "on",

"Editor$Edit$Advanced$chkMainSyndication": "on",

"Editor$Edit$lkbDraft": "存为草稿",

}

r2 = s.post(url2, data=body, verify=False)

print r2.url

return r2.url

def get_postid(u):

‘‘‘正则提取postid‘‘‘

import re

postid = re.findall(r"postid=(.+?)&", u)

print postid # 这里是list

if len(postid) < 1:

return ‘‘

else:

return postid[0]

def delete_box(s,url3, postid):

‘‘‘删除草稿箱‘‘‘

json3 = {"postId": postid}

r3 = s.post(url3, json=json3, verify=False)

print r3.json()

if __name__ == "__main__":

url = "https://passport.cnblogs.com/user/signin"

payload = {

"input1": "xxx",

"input2": "xxx",

"remember": True

}

s = requests.session()

login(s, url, payload,)

url2 = "https://i.cnblogs.com/EditPosts.aspx?opt=1"

u = save_box(s, url2, "标题", "正文内容")

postid = get_postid(u)

url3 = "https://i.cnblogs.com/post/delete"

delete_box(s, url3, postid)

对python接口自动化有兴趣的,可以加python接口自动化QQ群:226296743

也可以关注下我的个人公众号:

L3Byb3h5L2h0dHAvaW1hZ2VzMjAxNS5jbmJsb2dzLmNvbS9ibG9nLzEwNzA0MzgvMjAxNzA0LzEwNzA0MzgtMjAxNzA0MTcyMjQ4Mzk2OTYtMTU4NDE3NTc1MS5qcGc=.jpg

时间: 05-25

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 接口自动化,参数传递通常可以通过以下几种方式: 1. 位置参数传递:按照函数定义时参数的顺序,在函数调用时传入相应位置的参数值。 ```python def add(a, b): return a + b result = add(1, 2) # 位置参数传递,a=1, b=2 print(result) # 输出 3 ``` 2. 关键字参数传递:按照函数定义时参数的名称,在函数调用时传入相应名称的参数值。 ```python def add(a, b): return a + b result = add(b=2, a=1) # 关键字参数传递,a=1, b=2 print(result) # 输出 3 ``` 3. 默认参数传递:在函数定义时给参数设置默认值,调用函数时可以不传递该参数,使用默认值。 ```python def add(a, b=2): return a + b result1 = add(1) # 默认参数传递,a=1, b=2 result2 = add(1, 3) # 位置参数传递,a=1, b=3 print(result1) # 输出 3 print(result2) # 输出 4 ``` 4. 可变长参数传递:在函数定义时使用 *args 或 **kwargs,可以接收不定数量的位置参数或关键字参数。 ```python def add(*args): result = 0 for num in args: result += num return result result1 = add(1, 2, 3) # 可变长位置参数传递,args=(1, 2, 3) result2 = add(1, 2, 3, 4, 5) # 可变长位置参数传递,args=(1, 2, 3, 4, 5) print(result1) # 输出 6 print(result2) # 输出 15 def add(**kwargs): result = 0 for key in kwargs: result += kwargs[key] return result result = add(a=1, b=2, c=3) # 可变长关键字参数传递,kwargs={'a': 1, 'b': 2, 'c': 3} print(result) # 输出 6 ``` 以上是 Python 接口自动化常用的参数传递方式,具体使用方法需要根据实际情况进行选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值