码迷,mamicode.com
首页 > 编程语言 > 详细

记录python接口自动化测试(第一目)

时间:2018-03-26 00:33:32      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:缩进   目的   coding   数据   处理   xxx   elf   请求头   输出   

前2个月学习了使用jmeter+ant做接口测试,并实现了接口的批量维护管理(大概500多条用例),对“接口”以及“接口测试”有了一个基础了解,最近找了一些用python做接口测试的资料,一方面为了学习下如何使用python进行接口测试(如何做出一个简单基础的接口测试框架),另一方面也为了锻炼下如何用python写代码(接触python也有一段时间了,但是每次自己编程总有种提笔忘字的感觉,真是欠练!!)

 

首先,用python做接口测试,主要用到就是requests库和json库。

1.先看一个简单的demo

 1 # -*- coding: UTF-8 -*-
 2 import requests
 3 get_url = http://192.168.0.53:7001/CommonService/api/user/login.v
 4 data = {userCode:csqy123456,userPWD:123456}
 5 r = requests.get(url=get_url, params=data, timeout=5)   #产生一个名为r的Response对象,可以从这个对象中获取我们想要的信息; #get请求传参数时,使用params关键字  #timeout参数用来设定停止等待响应的时间
 6 print(r.url)   #返回请求url
 7 print(r.json())  #以JSON格式解析响应内容
 8 print(r.status_code)   #返回状态码
 9 print(r.raise_for_status())   #如果发送了一个错误请求,如404、500等,可以通过raise_for_status()来抛出异常
10 print(r.encoding)  #查看requests使用了什么编码,同时可以用r.encoding属性来改变它
11 print(r.raw)     #获取来自服务器的原始套接字响应
12 print(r.headers)   #服务器返回给我们的响应头信息,也可以在传参时通过headers=XXX来定制请求头
13 print(r.request)   #获取原来创建的Request对象
14 print(r.request.headers)   #发送到服务器的请求头
1 # -*- coding: UTF-8 -*-
2 import requests 
3 post_url = http://192.168.0.53:7001/CommonService/api/control/startBatchControl/add.v
4 data = {approveSeq:6610,userCode:qyzh123456_88,projName:测试项目}
5 r = requests.post(post_url, data=payload2, timeout=1)   #get请求传参数时,使用data关键字
6 print(r.json()) 7print(r.status_code)

 2.然后通过函数调用来发送get/post请求

# -*- coding: UTF-8 -*-
import requests


def send_get(url, data):
    """ 定义send_get函数,用来接收参数,发送get请求 """
    r = requests.get(url=url, params=data)
    result = r.json()
    return result


def send_post(url, data):
    """ 定义send_post函数,用来接收参数,发送post请求 """
    r = requests.get(url=url, data=data)
    result = r.json()
    return result


def main(url, method, data):
    """ 定义一个主函数,根据method是get或post,来调用send_post()或send_get() """
    if method == POST:
        r = send_post(url, data)  # 如果是POST请求,则调用send_post()
    else:
        r = send_get(url, data)   # 如果是GET请求,则调用send_get()
    return r   # 将结果返回出去


url = http://192.168.0.53:7001/CommonService/api/control/controlProgress/query.v
data = {
    controlSeq: 2018118325
}
demo = main(url, GET, data)
print(demo)

3.定义一个类,对post请求和get请求进行封装

# -*- coding: UTF-8 -*-

import requests
import json


class RunMain:
    """含有构造器"""
    def __init__(self, url, method, data=None):
        self.t = self.run_main(url, method, data)

    def send_post(self, url, data):
        r = requests.post(url=url, data=data)
        result = r.json()
        return json.dumps(result, indent=2, sort_keys=False, ensure_ascii=False)

    def send_get(self, url, data):
        r = requests.get(url=url, params=data)
        result = r.json()
        return json.dumps(result, indent=2, sort_keys=False, ensure_ascii=False)
        # 利用json.dumps处理返回数据格式
        # indent=2将输出结果缩进2个字符显示
        # sort_keys=False,输出结果是否按照关键字排序
        # json.dumps 序列化时对中文默认使用的ascii编码,ensure_ascii=False才会输出中文
        # return result

    def run_main(self, url, method, data=None):
        if method == GET:
            r = self.send_get(url, data)
        else:
            r = self.send_post(url, data)
        return r


if __name__ == __main__:
    url = http://192.168.0.53:7001/CommonService/api/control/controlProgress/query.v
    data = {
        controlSeq: 2018118325
    }
    test = RunMain(url, GET, data)  # 因为有构造器 __init__,实例化时要带参数
    print(test.t)

 下面是json.dumps使用前后的对比图

技术分享图片 技术分享图片

 第一目的内容到此结束,一方面简单介绍下requests的用法,另一方面将post和get请求进行基本封装,通过实例化对象进行调用

记录python接口自动化测试(第一目)

标签:缩进   目的   coding   数据   处理   xxx   elf   请求头   输出   

原文地址:https://www.cnblogs.com/hanmk/p/8647145.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!