'''
python当中用requests库做借口测试和接口自动化测试
python当中好友那些库可以用来做接口测试?
httplib urllib urllib2 urllib3 requests
java当中:Httpclient
安装requests:pip install requests
'''
import requests
# 组建接口的第一种方法
r = requests.post(url=url,data=data,json=json)
# 组建接口的第二种方法
r = requests.request("post",url=url,data = data)
# 组建接口的第三种方法
r = requests.Session() #使用session保持上下文管理,可以保持会话的状态
# 注意点
# 1、get请求用params参数
# 2、接口的请求内容类型为application/x-www-form-urlencoded的post请求用data参数
# 3、接口的请求内容类型为application/json的post请求用json参数
# 4、如果请求的接口是https协议的、要做接口测试需要关闭tls和ssl证书校验
# 代码要加:response = requests.post(verify=False)
# 组建接口请求的要素:url 接口的入参(body) headers 接口的请求方法
# 组建post请求
login_url ='http://cms.duoceshi.cn/cms/manage/loginJump.do'
login_data ={
'userAccount':'admin',
'loginPwd':123456
}
login_headers = {'Content-Type':'application/x-www-form-urlencoded'}
# #发送接口的请求
response = requests.post(url=login_url,data=login_data,headers=login_headers)
print(response.text)
print(type(response.text)) #<class 'str'> 返回的字符串类型
print(response.json()) #通过json函数把接口响应的结果转换为一个字典==》可以用来断言
print(type(response.json()))
print(response.url)
print(response.status_code)
print(response.headers)
print(response.cookies)
# #接口断言的第一种方式
result = response.json()
if result['msg'] == '登录成功!':
print('接口联调成功')
else:
print('接口联调失败')
# 接口断言第二种方式
assert result['msg'] == '登录成功!'
组建一个get请求
login_url ='http://cms.duoceshi.cn/cms/manage/loginJump.do'
login_data ={
'userAccount':'admin',
'loginPwd':123456
}
# 第一种方法
response = requests.get(url=login_url,params=login_data)
# 第二种方法
response = requests.request('get',url=login_url,params=login_data)
print(response.text)
#第三种方法,用session来保持会话
import requests
import re
class Cms:
def __init__(self):
'''创建session对象'''
self.session = requests.Session()
self.cookie = {}#创建一个空字典来存储cookie
def login(self):
'''封装一个登录接口'''
login_url = 'http://cms.duoceshi.cn/cms/manage/loginJump.do'
login_data = {
'userAccount':'admin',
'loginPwd':123456
}
login_headers = {'Content-Type':'application/x-www-form-urlencoded'}
response = requests.post(url=login_url,data=login_data,
headers=login_headers)
result = str(response.cookies)
# self.cookie['Cookie'] = re.findall('Cookie (.+) for',result)[0]
a = re.findall('Cookie (.+) for',result)[0]
return a
# print(response.json())
def queryUserList(self):
'''封装一个查询用户接口'''
queryUserList_url = "http://cms.duoceshi.cn/cms/manage/queryUserList.do"
queryUserList_data = {
"startCreateDate":"",
"endCreateDate":"",
"searchValue":"",
"page": 1
}
queryUserList_headers = {'Content-Type': 'application/x-www-form-urlencoded',
'Cookie':self.login()}
response = requests.post(url=queryUserList_url,data=queryUserList_data,
headers=queryUserList_headers)
print(response.text)
if __name__ == '__main__':
a = Cms()
# a.login()
a.queryUserList()
#用unittest单元测试框架进行封装
import requests
import unittest
class Cms(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.session = requests.Session()
def test001_login(self):
'''封装一个登录接口'''
login_url = 'http://cms.duoceshi.cn/cms/manage/loginJump.do'
login_data = {
'userAccount':'admin',
'loginPwd':123456
}
login_headers = {'Content-Type':'application/x-www-form-urlencoded'}
response = self.session.post(url=login_url,data=login_data,headers=login_headers)
# print(response.json())
def test002_queryUserList(self):
'''封装一个查询用户接口'''
queryUserList_url = "http://cms.duoceshi.cn/cms/manage/queryUserList.do"
queryUserList_data = {
"startCreateDate":"",
"endCreateDate":"",
"searchValue":"",
"page": 1
}
queryUserList_headers = {'Content-Type': 'application/x-www-form-urlencoded'}
response = self.session.post(url=queryUserList_url,data=queryUserList_data,
headers=queryUserList_headers)
result = response.json()
msg = result['msg']
self.assertEqual(msg,'查询用户成功!') #断言实际结果与预期结果相同
# self.assertNotEqual(msg,'查询用户失败') #断言结果不同
# self.assertIn('查询用户',msg) #断言预期结果在实际结果里面
if __name__ == '__main__':
unittest.main()
# 根据省份获取城市接口
import requests
import random
import re
class Province:
def get_province(self):
'''封装获取省份接口'''
url = 'http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
response = requests.post(url=url,headers=headers)
result = response.text
# print(result)
data = re.findall('<string>(.+)</string>',result)
province = random.sample(data,1)[0]
return province
def get_city(self):
'''获取省份下的城市接口'''
url = 'http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity'
data = {
'byProvinceName':self.get_province()
}
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
response = requests.post(url=url,data=data,headers=headers)
print(response.text)
if __name__ == '__main__':
p = Province()
# p.get_province()
p.get_city()
# yshop后台接口
import requests
class Yshop:
def code_uuid(self):
url = 'http://manage.duoceshi.com/auth/code'
response = requests.get(url=url)
result = response.json()
return result['uuid']
def login(self):
url = 'http://manage.duoceshi.com/auth/login'
data = {
"code": "8888",
"password": "Kh65VwNmq4nMQbBFM/UjZKxOzxwVBXDo5/+0EqcWMIArjucqQLO4HYwWkct65vLzBPQBr0hgmwF0tV365WnQoA==",
"username": "admin",
"uuid": self.code_uuid()
}
headers = {'Content-Type':'application/json'}
response = requests.post(url=url,json=data,headers=headers)
result = response.json()
return result['token']
def order(self):
url = 'http://manage.duoceshi.com/api/menus/build'
headers = {'Content-Type':'application/json','Authorization':self.login()}
response = requests.get(url=url,headers=headers)
print(response.json())
if __name__ == '__main__':
y = Yshop()
# y.code_uuid()
# y.login()
y.order()
|
|