找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
'''
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()

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册