pytest之基础,json,token,cookie,session,requests库易错点

json有对象和数组两种结构,有字符串,数字,逻辑值,空值,四种数据类型

口诀1:用大括号{}表示对象,对象是由属性组成的,属性是由键值对组成的,键值对用冒号隔开,属性之间用逗号隔开。键必须要用双引号引起来

口诀2:用中括号[]表示数组,数组由单独的值组成

口诀3:json可以嵌套

token

token是由服务器产生的,存在服务器内存或硬盘中

 1 #!/usr/bin/env python3
 2 # -*- coding: UTF-8 -*-
 3 """
 4 @author:zhaojian
 5 @file:login.py
 6 @time:2020/11/18
 7 """
 8 import requests
 9 #MD5加密
10 import hashlib
11 def get_md5(psw):
12     '''
13     :param psw:
14     :return:
15     '''
16     md5 = hashlib.md5()#实例化对象
17     md5.update(psw.encode('utf-8'))#加密操作
18     return md5.hexdigest()#调用hexdigest,获取加密结果
19 
20 
21 
22 def login(inData,getToken=True):
23     '''
24 
25     :param inData:
26     :param getToken:
27     :return:
28     '''
29     url = "http://121.4.1.39:8082/account/sLogin"
30     inData['password'] = get_md5(inData['password'])
31     payload = inData
32     resp = requests.post(url,data=payload)
33     # print(resp.request.body)
34     # print(resp.request.headers)
35     # print(resp.request.url)
36     # print(resp.text)
37     '''
38     cookie的获取
39     1.print(resp.cookies)#原生态提取cookies的方法,直接使用
40     2.对cookie进行重新封装,再使用
41       print(resp.cookies[sessionid])#直接提取cookie中的sessionid值
42     
43     return resp.cookies,resp.cookies[sessionid]
44     #1.原生态使用方法
45     cookie1 = login({'username':'sq0178','password':'a55427'})[0]  #因为上面return了两个返回值,所以要写下标为0,才能取到值
46     res1 = requests.post(url,cookies=cookie1)
47     #2.方案2
48     sessionid2 = login({'username':'sq0178','password':'a55427'})[1]
49     cookie2 = {'sessionid':sessionid2}
50     res2 = requests.post(url,cookies=cookie2)
51     '''
52     if getToken:
53         #获取响应是个字典 ,resp.json()方法,它的结果是一个字典
54         return resp.json()['data']['token']
55     else:
56         return resp.json()#获取接口响应,只有明确响应是json格式时才能用这个方法
57 
58 
59 if __name__ == '__main__':
60     print(login({'username':'0178','password':'5'}))

cookie

cookie里一般是带有sessionId的

cookie是分站点的,站点之间的cookie是相互独立的

浏览器的cookie是保存在浏览器某个位置的

服务器端可以通过:响应头中的set-Cookie参数,对客户端的Cookie进行管理

浏览器每次请求,都会把该站点的cookie发送给服务器

登录一般需要cookie和Session配合使用

sessionId

sessionId是一个对象,是服务器产生的,保存在服务器内存中

sessionId是session对象的一个属性,是全局唯一的,永远不会重复的

接口自动化遇到https的url的话,要在参数那加个verify = False

原文地址:https://www.cnblogs.com/zhaobobo001/p/14433112.html