接口测试-requests实例

requests实例-带参数的

1.使用moco搭建一个接口

创建一个文件夹moco2
放入文件:moco-runner-1.0.0-standalone.jar , configure.json以及一个res.py文件

2.configure.json

[
  {
    "description": "模拟获取某个功能的具体信息接口,get请求和响应,返回json格式数据,无参数",
    "request": {
      "method": "get",
      "uri": "/book_list"
    },
    "response": {
      "json": {
        "error_code": 0,
        "reason": "successed",
        "books": "软件测试",
        "checkstatus": "on"
      },
      "status": 200
    }
  },
  {
    "description": "模拟获取某个功能的具体信息接口,get请求和响应,返回json格式数据,有参数",
    "request": {
      "method": "get",
      "uri": "/book_info",
      "queries": {
        "bookname": "软件测试",
        "checkstatus": "on"
      }
    },
    "response": {
      "json": {
        "error_code": 0,
        "reason": "successed",
        "name": "软件测试",
        "price": "666"
      },
      "status": 200
    }
  },
  {
    "description": "模拟接口,post_form请求和响应,入参是form形式,返回是json数据",
    "request": {
      "headers": {
        "content-type": "application/x-www-form-urlencoded"
      },
      "method": "post",
      "uri": "/login01",
      "forms": {
        "username": "zhangshan",
        "password": "123456"
      }
    },
    "response": {
      "json": {
        "error_code": 0,
        "reason": "successed",
        "username": "zhangshan",
        "checkstatus": "on"
      },
      "status": 200
    }
  },
  {
    "description": "模拟接口,post_json请求和响应,入参是json形式,返回是json数据",
    "request": {
      "method": "post",
      "uri": "/login02",
      "json": {
        "username": "zhangshan",
        "password": "123456"
      }
    },
    "response": {
      "headers": {
        "Content-Type": "application/json;charset=utf-8"
      },
      "json": {
        "error_code": 0,
        "reason": "successed",
        "username": "zhangshan",
        "checkstatus": "on"
      },
      "status": 200
    }
  }
]
浏览器访问网址
http://127.0.0.1:8888/book_list
http://127.0.0.1:8888/book_info?bookname=软件测试&checkstatus=on


3.代码实例

1.get请求

import json
import requests
# get
url = 'http://127.0.0.1:8888'
path = '/book_list'
full_url = url + path
print('GET 请求完整的url', full_url)
headers_dict = {}
print('GET 请求完整的请求头', headers_dict)
res = requests.get(full_url, headers=headers_dict, )
print('GET 响应状态码', res.status_code)
print('GET 响应头', res.headers)
print('GET 响应结果', res.text)
print('GET 响应时间', res.elapsed.total_seconds(), '秒')

json_res = res.json()
print('GET 响应结果', json_res)

# get_queries
url = 'http://127.0.0.1:8888'
path = '/book_info'
full_url = url + path
print('GET 请求完整的url', full_url)
# 'checkstatus'='on' 是get与get_queries的关联依赖参数
data = json.loads(res.text) # 把json转成字典类型
checkstatus = data['checkstatus'] # 字典取值
params_dict = {'bookname': '软件测试', 'checkstatus': checkstatus}
print('GET 请求完整的参数', params_dict)
headers_dict = {}
print('GET 请求完整的请求头', headers_dict)
res = requests.get(full_url, params=params_dict, headers=headers_dict, )
print('GET 响应状态码', res.status_code)
print('GET 响应头', res.headers)
print('GET 响应结果', res.text)
print('GET 响应时间', res.elapsed.total_seconds(), '秒')

json_res = res.json()
print('GET 响应结果', json_res)

2.post请求

import json
import requests
# post_forms
url = 'http://127.0.0.1:8888'
path = '/login01'
full_url = url + path
print('POST 请求的完整url', full_url)

data = {"username": "zhangshan", "password": "123456"}  # 传入json格式
print('POST 请求参数', data)
headers_dict = {'Content_Type': 'application/x-www-form-urlencoded'} # forms格式
res2 = requests.post(full_url, data=data, headers=headers_dict)
print('POST 响应状态码', res2.status_code)
print('POST 响应头', res2.headers)
print('POST 响应结果', res2.text)
print('POST 响应时间', res2.elapsed.total_seconds(), '秒')
json_res2 = res2.json()
print('POST 响应结果', json_res2)

# post_json
url = 'http://127.0.0.1:8888'
path = '/login02'
full_url = url + path
print('POST 请求的完整url', full_url)

data = {"username": "zhangshan", "password": "123456"}  # 传入json格式
data = json.dumps(data) # python类型转化为json字符串
print('POST 请求参数', data)
headers_dict = {'Content_Type': 'application/json'} # json格式
res3 = requests.post(full_url, data=data, headers=headers_dict)
print('POST 响应状态码', res3.status_code)
print('POST 响应头', res3.headers)
print('POST 响应结果', res3.text)
print('POST 响应时间', res3.elapsed.total_seconds(), '秒')
json_res3 = res3.json()
print('POST 响应结果', json_res3)

4.封装成函数

1.get请求

import requests


def get(full_url, headers_dict):
    # try 抛出异常
    try:
        res = requests.get(full_url, headers=headers_dict, )
        print('GET 响应状态码', res.status_code)
        print('GET 响应头', res.headers)
        print('GET 响应结果', res.text)
        print('GET 响应时间', res.elapsed.total_seconds(), '秒')
        json_res = res.json()
        print('GET 响应结果', json_res)
        return json_res
    except Exception as e:
        print('get错误')


url = 'http://localhost:8888'
path = '/book_list'
full_url = url + path
headers_dict = {}
res = get(full_url, headers_dict)
# 通过业务状态码判断是否成功
if res['error_code'] == 0:
    print('成功')
else:
    print('失败')
def get_queries(full_url, params_dict, headers_dict):
    # try 抛出异常
    try:
        res1 = requests.get(full_url, params=params_dict, headers=headers_dict, )
        print('GET 响应状态码', res1.status_code)
        print('GET 响应头', res1.headers)
        print('GET 响应结果', res1.text)
        print('GET 响应时间', res1.elapsed.total_seconds(), '秒')
        json_res1 = res1.json()
        print('GET 响应结果', json_res1)
        return json_res1
    except Exception as e:
        print('get错误')


url = 'http://localhost:8888'
path = '/book_info'
full_url = url + path
params_dict = {'bookname': '软件测试', 'checkstatus': 'on'}
headers_dict = {}
res1 = get_queries(full_url, params_dict, headers_dict)
# 通过业务状态码判断是否成功
if res1['error_code'] == 0:
    print('成功')
else:
    print('失败')

2.post请求

import requests
import json
def post_forms(full_url, data, headers_dict):
    try:
        res2 = requests.post(full_url, data=data, headers=headers_dict)
        print('POST 响应状态码', res2.status_code)
        print('POST 响应头', res2.headers)
        print('POST 响应结果', res2.text)
        print('POST 响应时间', res2.elapsed.total_seconds(), '秒')
        json_res2 = res2.json()
        print('POST 响应结果', json_res2)
        return json_res2
    except Exception as e:
        print('post_forms 错误')


url = 'http://localhost:8888'
path = '/login01'
full_url = url + path
data = {"username": "zhangshan", "password": "123456"}
headers_dict = {'content_type': 'application/x-www-form-urlencoded'} # forms格式
res2 = post_forms(full_url, data, headers_dict)
if res2['checkstatus'] == 'on':
    print('成功')
else:
    print('失败')


def post_json(full_url, data, headers_dict):
    try:
        res3 = requests.post(full_url, data=data, headers=headers_dict)
        print('POST 响应状态码', res3.status_code)
        print('POST 响应头', res3.headers)
        print('POST 响应结果', res3.text)
        print('POST 响应时间', res3.elapsed.total_seconds(), '秒')
        json_res3 = res3.json()
        print('POST 响应结果', json_res3)
        return json_res3
    except Exception as e:
        print('post_json错误')


url = 'http://localhost:8888'
path = '/login02'
full_url = url + path
data = {"username": "zhangshan", "password": "123456"}
data = json.dumps(data)
headers_dict = {'content_type': 'application/json'} # json 格式
res3 = post_json(full_url, data, headers_dict)
if res3['checkstatus'] == 'on':
    print('成功')
else:
    print('失败')

5.封装成类

类中有四个方法

import json
import requests


class Httprequests():
    def get(self, full_url, headers_dict):
        # try 抛出异常
        try:
            res = requests.get(full_url,  headers=headers_dict, )
            print('GET 响应状态码', res.status_code)
            print('GET 响应头', res.headers)
            print('GET 响应结果', res.text)
            print('GET 响应时间', res.elapsed.total_seconds(), '秒')
            json_res = res.json()
            print('GET 响应结果', json_res)
            return json_res
        except Exception as e:
            print('get错误')
    def get_queries(self, full_url, params_dict, headers_dict):
        # try 抛出异常
        try:
            res1 = requests.get(full_url, params=params_dict, headers=headers_dict, )
            print('GET 响应状态码', res1.status_code)
            print('GET 响应头', res1.headers)
            print('GET 响应结果', res1.text)
            print('GET 响应时间', res1.elapsed.total_seconds(), '秒')
            json_res1 = res1.json()
            print('GET 响应结果', json_res1)
            return json_res1
        except Exception as e:
            print('get错误')

    def post_forms(self, full_url, data, headers_dict):
        try:
            res2 = requests.post(full_url, data=data, headers=headers_dict)
            print('POST 响应状态码', res2.status_code)
            print('POST 响应头', res2.headers)
            print('POST 响应结果', res2.text)
            print('POST 响应时间', res2.elapsed.total_seconds(), '秒')
            json_res2 = res2.json()
            print('POST 响应结果', json_res2)
            return json_res2
        except Exception as e:
            print('post_forms 错误')

    def post_json(self, full_url, data, headers_dict):
        try:
            res3 = requests.post(full_url, data=data, headers=headers_dict)
            print('POST 响应状态码', res3.status_code)
            print('POST 响应头', res3.headers)
            print('POST 响应结果', res3.text)
            print('POST 响应时间', res3.elapsed.total_seconds(), '秒')
            json_res3 = res3.json()
            print('POST 响应结果', json_res3)
            return json_res3
        except Exception as e:
            print('post_json错误')
obj = Httprequests()  # 实例化对象 类名()
url = 'http://localhost:8888'
path = '/book_list'
full_url = url + path
headers_dict = {}
res = obj.get(full_url, headers_dict)  # 通过实例化的对象.
# 通过业务状态码判断是否成功
if res['error_code'] == 0:
    print('成功')
else:
    print('失败')


obj1 = Httprequests()  # 实例化对象 类名()
url = 'http://localhost:8888'
path = '/book_info'
full_url = url + path
params_dict = {'bookname': '软件测试', 'checkstatus': 'on'}
headers_dict = {}
res1 = obj1.get_queries(full_url, params_dict, headers_dict)  # 通过实例化的对象.
# 通过业务状态码判断是否成功
if res1['error_code'] == 0:
    print('成功')
else:
    print('失败')

obj2 = Httprequests()  # 实例化对象 类名()
url = 'http://localhost:8888'
path = '/login01'
full_url = url + path
data = {"username": "zhangshan", "password": "123456"}
headers_dict = {'content_type': 'application/x-www-form-urlencoded'}  # forms格式
res2 = obj2.post_forms(full_url, data, headers_dict)
if res2['checkstatus'] == 'on':
    print('成功')
else:
    print('失败')

obj3 = Httprequests()  # 实例化对象 类名()
url = 'http://localhost:8888'
path = '/login02'
full_url = url + path
data = {"username": "zhangshan", "password": "123456"}
data = json.dumps(data)
headers_dict = {'content_type': 'application/json'}  # json 格式
res3 = obj3.post_json(full_url, data, headers_dict)
if res3['checkstatus'] == 'on':
    print('成功')
else:
    print('失败')


posted @ 2019-12-05 17:55  张珊33  阅读(191)  评论(0编辑  收藏  举报