# 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()