python接口自动化
# coding=utf-8 ''' python中常用的做接口自动化测试的库有哪些? requests、urllib、urllib3、httplib requests是开源免费的,应用最多的一个库 ''' # import requests #创建接口请求三种方法 #r=requests.post(url=url,data=data,json=json) #r=requests.request('psot',url=url,data=data) #r=requests.Session() #使用session保持上下文管理,可以保持会话状态 #get请求的参数一般放在params里面 #post请求参数一般放在data和json里面 #如果接口内容类型connect-type为application/x-www-form-urlencoded 就用data #如果接口内容类型connect-type为application/json 就用json #组件一个post请求 #发送一个接口请求基本组成有哪些?url地址、入参、headers、接口请求方法 #1.定义url地址 # login_url='http://cms.duoceshi.cn/cms/manage/loginJump.do' #2.接口的入参 # data={'userAccount': 'admin', # 'loginPwd': 123456 } #3.接口请求头 # headers={'Content-Type': 'application/x-www-form-urlencoded'} #组件接口 # r=requests.post(url=login_url,data=data,headers=headers) # result=r.text #{"code":"200","msg":"登录成功!","model":{}} <class 'str'> # result=r.json() #把接口返回json字符串通过json函数进行处理成字典{'code': '200', 'msg': '登录成功!', 'model': {}} <class 'dict'> # print(result,type(result)) # print(result,type(result)) # print(r.headers) #拿到响应头 # print(r.status_code) #拿到响应状态码 # print(r.cookies) #拿到响应的cookie #第一种断言方法 # if result['msg']=='登录成功!': # print('接口断言成功') # else: # print('接口断言失败') #第二种断言方法 # if result['code']=='200': # print('接口断言成功') # else: # print('接口断言失败') #组件get请求 #1.定义url地址 # login_url='http://cms.duoceshi.cn/cms/manage/loginJump.do' #2.接口的入参 # data={'userAccount': 'admin', # 'loginPwd': 123456 } #3.接口请求头 # headers={'Content-Type': 'application/x-www-form-urlencoded'} #组件接口 # r=requests.get(url=login_url,params=data,headers=headers) # result=r.text #{"code":"200","msg":"登录成功!","model":{}} # result=r.json() #{'code': '200', 'msg': '登录成功!', 'model': {}} # print(result) #把接口请求封装在类里面 import requests # class Cms(): # def __init__(self): # #创建一个session对象,作用就是保持上下文管理,登录之后和登录的接口保持在同一个会话中 # self.session=requests.Session() # def login_url(self): # '''封装一个登录接口''' # login_url='http://cms.duoceshi.cn/cms/manage/loginJump.do' # data={'userAccount': 'admin', # 'loginPwd': 123456 } # header={'Content-Type': 'application/x-www-form-urlencoded'} # #组件接口 # r=self.session.post(url=login_url,data=data,headers=header) # result=r.json() # print(result) # if __name__ == '__main__': # c=Cms() # c.login_url() import unittest class Cms(unittest.TestCase): @classmethod def setUpClass(cls) -> None: # 创建一个session对象,作用就是保持上下文管理,登录之后和登录的接口保持在同一个会话中 cls.session = requests.Session() def test01_login(self): login_url = 'http://cms.duoceshi.cn/cms/manage/loginJump.do' data = {'userAccount': 'admin', 'loginPwd': 123456} header = {'Content-Type': 'application/x-www-form-urlencoded'} # 组件接口 r = self.session.post(url=login_url, data=data, headers=header) result = r.json() print(result) def test02_query(self): query_url='http://cms.duoceshi.cn/cms/manage/queryUserList.do' query_data={'startCreateDate':'', 'endCreateDate':'', 'searchValue':1234, 'page':1} query_header={'Content-Type': 'application/x-www-form-urlencoded'} r=self.session.post(url=query_url,data=query_data,headers=query_header) result=r.json() print(result) if __name__ == '__main__': unittest.main()