Python接口项目实战篇(1)读取xlsx中账户密码,unittest框架实现通过requests接口post登录网站请求,JSON判断登录是否成功
- 实现功能描述
- 1.首先获取到接口
- 谷歌浏览器中获取接口信息
- fiddler里面抓取接口信息
- 2.创建一个xlsx文档
- 3.导入我们需要使用的包
- 4.用xlrd读取xlsx文档中的内容
- 5.通过unittest框架实现requests post接口登录
- 6.结果
关于本篇的完整代码已经上传有需要的可以进行下载
Python接口项目实战篇(1)
实现功能描述
本篇需要实现的功能就是读取xlsx中的账户密码,来实现requests接口post登录网站的请求本篇使用的网站是cms系统
关于这个系统大家可以在网上搜寻一下。具体功能实现流程的如图所示
1.首先获取到接口
谷歌浏览器中获取接口信息
登录之后点击开发者工具
再点击网络,再点Fetch/XHR抓取接口
我们可以看到我们抓取的接口就是这个loginJump.do接口,有了这个接口之后我们可以对它进行登录的请求
fiddler里面抓取接口信息
登录之后点击跳转就会看到登录的信息
点击json查看返回的数据,这条数据是一个很好用来判断json登录是否成功的一种情况,我们可以用这个msg来判断是否登陆成功
2.创建一个xlsx文档
如果你没有在python中安装xlrd可以直接在pycharm中用python interpreter中点加号进行安装,注意一定要用xlrd1.2版本如果高于这个版本是无法连接xlsx文档
xlsx中的账号密码
3.导入我们需要使用的包
import os
import xlrd
import unittest,requests
from ddt import ddt,data,unpack
4.用xlrd读取xlsx文档中的内容
class read_xlsx:
def __init__(self,file):
self.read_file = xlrd.open_workbook(os.path.join('D:\pythonpj\pytest',file))#读取本地xlsx的地址包
def get_xlsx(self,idex):
sheet_idex = self.read_file.sheet_by_index(idex)
key =sheet_idex.row_values(0)
l=[]
for i in range(1,sheet_idex.nrows):#统计页中行数
values = sheet_idex.row_values(i)
print(values)
key_values=zip(key,values)#创建迭代器
dt = dict(key_values)#对key和values值进行字典拼接
l.append(dt)#添加值进去l中
return l
# read_xlsx('ex.xlsx')
da_ta=read_xlsx('ex.xlsx').get_xlsx(0)
代码写完后已经可以成功获取到本地的xlsx文档内的账号密码以字典的形式输出
5.通过unittest框架实现requests post接口登录
@ddt #使用ddt
class logjump(unittest.TestCase):
@data(*da_ta)
@unpack
def test_lojump(self,**tst):#需要用test命名才能用unittest的测试框架
url='http://192.168.52.129:8080/cms/manage/loginJump.do'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
data = {'userAccount': tst['username'],
'loginPwd': int(tst['pwd'])} # 将键值对存放
rps= requests.post(url=url,headers=headers,data=data)#传参
print(rps.text)
js =rps.json()#获取json值
if js['msg']=='登录成功!':#设定断言
print('恭喜你接口登录成功')
else:
print('接口登录不成功')
assert js['msg'] == '登录成功!' # 捕获断言
if __name__ == '__main__':
unittest.main()
6.结果
可以看到unittest运行结果,第一个我们输入的账号密码正确,接口登录成功,第二我们输入的账号正确,密码错误,也就登录不成功,接口也登陆不成功,用例显示也是显示失败,因为第二个返回的json数据中msg值并不存在,相应的数据内容,所以就会报错。