关于接口自动化的那些事 - 基于 Python

网络请求模拟小技巧

在学习了一段时间的Python语言后,咱也大概对Python的语法和逻辑有了一定的积累,接下来,可以为接口自动化测试开始尝试做一些比较简单的准备工作啦~跟着我一起来来来~

扩展库requests

一般来说接口测试都是基于HTTP和HTTPS的网络请求,Python中有很多自带原生库和扩展库均可以实现。Python模拟HTTP请求有两种方式,一种是使用httplib模块,一种是使用requests模块,我个人比较倾向于使用requests库,该库把请求的框架都搭建好了,使用简洁明了呢~

  • 使用requests

首先要安装及导入扩展库requests,咱可以使用pip来扩展第三方库,打开CMD,输入pip install requests,安装完成后,打开编辑器,练习使用requests库,废话不多说,直接上代码~

GET请求方式模拟:

import requests      #调用requests库
test_url = ‘http://xxx:8080.com‘      #访问接口的url地址
response = requests.get(test_url)       #发起一个请求,使用get方法
result = response.text          #读取请求返回的结果
print(result)     #打印返回的结果

POST请求方式模拟:

import requests      #调用requests库
username = ‘ningxw‘    #定义参数username
password = ‘123456‘   #定义参数password
test_url = ‘http://xxx:8080.com‘      #访问登录接口的url地址
datalist = {‘uname‘: username, ‘pwd‘: password}    #将参数添加到需求post的data中
head = {"Content-Type": "application/Json"}   #定义头部
response = requests.post(test_url, datas=datalist, headers=head)   #发起一个请求,使用post方法
result = response.text          #读取请求返回的结果
print(result)   #打印返回的结果

其实我的废话是可以不用说这么多的,给你们分享一个快速学习requests的干货,传送门 -> 快速上手 - Requests ,但是我就是想要展示下我的才气啊,我要表露出我博学多才的气质!哼!!

简单的接口自动化测试用例

恭喜你啊恭喜我啊,能把上面的网络请求掌握了,咱就可以继续下一步了~因为懂得了如何向接口请求数据,那我们就可以根据返回的数据来进行断言啦,断言是接口测试的重要部分哦~

做接口测试前的准备

  • 理解业务需求

所有测试的基础,都离不开对业务的理解,接口测试也是一样的~只有搞清楚业务的需求和逻辑,咱们才可以设计出一个比较好的用例哦~(我感觉我在讲废话! )

了解业务需求,比较快速简单的做法是可以从产品经理那边要求获取一份项目的原型,一般原型里面会把项目的内容说得很清楚,里面包含了比较重要的业务逻辑~

了解代码逻辑,可以通过开发已完成的代码去理解代码逻辑和业务逻辑,显然这部分对于大部分测试包括身为菜鸟的我是一样的难,但不得不说这是一个通往更高层面的测试的必经之路,开发的代码里面会包括多个开发的沟通协调及测试人员本身的编程基础和测试思想,为了不让自己成为轻易取代的人,咱必须得努力起来呀~干呀~

  • 查看规范的接口文档

咱做接口测试,就得对接口有深入的了解,所以一份规范的接口文档会让接口自动化测试事半功倍~但是呢,要沉淀出一份规范的接口文档,对开发来说无疑是增加重复劳动力的事情,而很多开发也不大愿意想帮助测试做些什么事~(我就常常被之前公司的开发鄙视,说我不务正业,瞎搞东西,让我做好点点点工作就好!真是好气哦!! )所以说呀,凡事还是靠自己呀,要是咱掌握了代码的能力,我们就可以自己去看代码了呀,就可以自己整理出接口文档,又不用有求于人,说不定还可以被上司赏识,从此升职加薪走上人生巅峰迎娶白富美… 好了,想想就好了,踏实的工作最重要呢~~

  • 编写代码完成接口测试

噔噔噔噔~一把鼻涕一把泪的终于要来到写代码测试接口的时刻了 ~在理清了业务需求和逻辑后,我们就可以开始试着去写一些请求了,看看接口返回的内容是不是我们预期的结果,然后通过断言来判断测试的结果~在写一个较为完整的用例之前,我们还是需要先巩固Python编程,了解一下有关数组的内容,json数据格式及转换方式unittest框架等,这样你才可以在写代码的时候游刃有余噢!!

贴一下我常用的接口自动化测试代码的基本格式和内容:

import unittest       #导入unittest
import requests     #导入requests库
import json            #导入json
 
class LianXi(unittest.TestCase):              #定义一个类,类的首字母要大写哦
       def setUp(self):                                 #初始化
             self.base_url = ‘http://ip:端口号/url地址‘      
 
       def test_get_success(self):             #定义一个方法,切记要以test开头哦
             datalist = {‘参数1‘: ‘值1‘, ‘参数2‘: ‘值2‘}               #定义传参数据
             head = {"Content-Type": "application/Json"}     #定义头部
             r = requests.post(self.base_url, params=datalist, headers=head)          #传入参数
             result = json.loads(r.text)            #使用json格式返回
             self.assertEqual(result[‘status‘], 0)      #检验返回值
             print(result)
 
if __name__ == ‘__main__‘:
      unittest.main()

以上就是我编写自动化用例的基本模板了,才疏学浅啊各位大神多多指教~

在编写测试代码的时候,会很纠结在post数据的时候,应该选用哪个关键字参数,也许聪明的你熟读上面我分享的干货《快速上手 - Requests》就可以搞懂,但是蠢萌的我还是没能完全掌握啊! 于是在我无数次的谷歌之后,我找到一个可以暂时解答我疑惑的回答,传送门 -> http://stackoverflow.com/questions/9733638/post-json-using-python-requests
,这部分还是需要多花点时间去学习和巩固哦~

接口自动化实践

前面啰啰嗦嗦的写了这么多基础的东西,目的就是为了让比我还菜鸟的宝宝们方便学习~到了这一章,估计也是本文的最后一章啦啦啦,咱们就来说说接口自动化的实践吧~宝宝们,带上你的大脑,跟着我一起high high high~(一言不合就想唱歌的老毛病居然犯了~ )

我现在做的项目是一个提供用户查询物流信息的系统,就给大家讲解一个最简单的增加单号”接口的例子吧~

  • 业务需求

我们把“增加单号”的业务需求逐条提炼出来~


编号


业务步骤


1


用户登录


2


输入单号


3


检验单号是否重复


4


检验单号是否超过今日追踪数量


5


增加单号成功

  • 根据业务,定义需要处理的函数

编号


函数


1


初始化数据:setup(),用来初始化一些比较常用到的数据


2


用户登录:test_getcookie() ,用来获取用户登录的cookie


3


增加单号成功:test_addtrackno_success(),用来测试增加单号接口

  • 初步的自动化框架

根据定义的函数,可以初步搭建出一个简陋的自动化框架,就是下面那一坨~

class AddTrackNo():
         def setup():
         #初始化数据
 
         def test_getcookie():
         #获取用户登录的cookie
 
         def test_addtrackno_success():
         #测试增加单号接口
 

看到这里,我知道有人想对我的设计以深深的鄙视来吐槽我,来啊造作啊,反正你又打不着我!!哈哈哈~~

  • 还是简单粗暴点,上代码吧

上代码前啊我就是想装逼说几句,如今这世道都是套路,不过只要你掌握了其中的思想和工具,那就不在怕的了!就一个字,上!!

# -*- coding: utf-8 -*-
#导入各种库
import requests
import json
import unittest
import pymssql
import xlrd
import re
 
class AddTrackNo(unittest.TestCase):
    ‘‘‘“(批量)增加单号”接口‘‘‘
 
    def setUp(self):
        ‘‘‘初始化数据‘‘‘
        self.user_url = ‘https://xxxxxxuser/call‘
        self.buyer_url = ‘https://xxxxxxorder/call‘
 
        ‘‘‘查询数据库中登录用户的信息‘‘‘
        self.conn = pymssql.connect(host=‘192.xx.xx.xx‘, user=‘sa‘, password=‘123456‘, database=‘Test_Buyer1‘)
        cur = self.conn.cursor()
        sql = ‘SELECT TrackNO FROM TrackInfo02 WHERE (Email = ‘[email protected]‘)‘
        cur.execute(sql)
        self.result = cur.fetchall()
 
    def tearDown(self):
        ‘‘‘关闭数据库‘‘‘
        self.conn.close()
 
    def test_getcookie(self):
        ‘‘‘用户登录,获取cookie<账号:[email protected]>‘‘‘
        data = {"Version": "xxx",
                "Method": "Signin",
                "SourceType": xx,
                "Param":
                    {"Email": "[email protected]",
                     "Password": "123456"}
                }
        req = requests.post(self.user_url, json=data)
        res = json.loads(req.text)
        self.assertEqual(res["Code"], 0)
        self.assertEqual(res[‘Json‘][‘FEmail‘], ‘[email protected]‘)
        #print(res)
        cookie = res["Cookies"]
        return cookie       #返回用户cookie
 
    def test_addtrackno_success(self):
        ‘‘‘成功_增加单号(状态码:0 保存成功)‘‘‘
 
        ‘‘‘查询数据库中该用户下的单号‘‘‘
        result = self.result
 
        ‘‘‘获取EXCEL表内的单号‘‘‘
        file = xlrd.open_workbook(r‘C:\Users\xx\test_trackno.xlsx‘)
        sheet = file.sheet_by_name(‘单号数据‘)
        cols = sheet.col_values(0)
        n = len(cols)
 
        ‘‘‘去除重复单号,并post增加单号‘‘‘
        index = 0
        arylist=[]
        for row in result:
            a = re.findall(‘[a-zA-Z0-9]‘, str(row))
            sj = ‘‘.join(a)
            arylist.append(sj)
            index += 1
 
        j = 0
        for i in range(n):
            if(j == 5):
                break
            if(cols[i] not in arylist):
                if len(result)>= 40:
                    break
 
                else:
                    j += 1
                    datalist = {"Version": "xxx",
                             "Method": "AddTrackNo",
                             "Cookies": self.test_getcookie(),
                             "SourceType": xx,
                             "Param": {
                                "TrackNos": [cols[i]]}
                             }
                    req1  = requests.post(self.buyer_url, json=datalist, headers={"Content-Type": "application/Json"} )
                    res = json.loads(req1.text)
                    print(res)
                    self.assertEqual(res[‘Code‘], 0)
                    self.assertEqual(res[‘Json‘][‘Items‘][0][‘ResultCode‘], 0)
  • 完善自动化测试用例

以上展示的就是其中一个接口的设计和实现,是不是很简单呢! 在实际的项目中肯定会遇到很多很多接口,那咱写完一个接口,肯定不想一个个的跑起来呀,那我们就可以再创建一个文件,使其做自动化跑接口用例~

Run_Tests.py代码如下:

import time, os
import sys
import unittest
from HTMLTestRunner import HTMLTestRunner     #引入HTMLTestRunner模板
 
sys.path.append(‘./Interface‘)    
test_dir = ‘./interface‘       #指定当前文件夹下的Interface目录
file = unittest.defaultTestLoader.discover(test_dir, pattern=‘*_test.py‘)    #匹配开头为test的py文件
 
if __name__=="__main__":
 
    now = time.strftime("%Y-%m-%d %H-%M-%S", time.localtime(time.time()))    # 取当前时间
    public_path = os.path.dirname(os.path.abspath(sys.argv[0]))       # 获取当前运行的.py文件所在的绝对路径
    filename = public_path + "\\Report\\" + now + "report.html"   #保存的报告路径和名称
    fp = open(filename, ‘wb‘)
    runner = HTMLTestRunner(stream=fp,
                            title="接口自动化报告",
                            description="详细描述如下:"
                            )
    runner.run(file)     #执行测试套件
    fp.close()

运行该文件,就可以把很多很多接口用例跑起来啦~ 代码写得就跟我一样的粗糙!!不过都是新鲜出炉的哈,以后有时间,我会认认真真去规范代码,争取做个努力上进的菜鸟~(认认真真规范的代码增加啦已经 ~~~ 耶耶耶 ~~~ )

优化接口自动化用例

啦啦啦啦啦~ 努力上进的小菜鸟又花了一些时间优化了下代码结构 上面的一大部分内容已经讲解了如何搭建一个丑陋的自动化接口测试框架,但是呢,爱美嘛是人的天性,自己撸出来的代码也要美化一下呀,不然怎么对得起自己的臭美天性呢哈哈~ 来来来,一起来看看这个“整容”过程吧 ~ 嘻嘻 ~

  • 增加配置文件(conf.ini,请注意内容,有血的教训之提示!!)

conf.ini (主要配置数据库、url、用户信息、状态码等常用数据信息)

[test_db]
#数据库信息(注意不要带上引号哦,不然会报错哦!!!)
host = 192.168.xx.xx
user = sa
password = sa123
db_test_buyer = Test_Buyer1
 
[user_info]
#用户信息
email = "[email protected]"
upassword = "123456"
 
[url]
#请求的接口地址(url不要带上引号哦,不然会报错哦!!!)
user_url = https://xxxxxxuser/call
 
[code]
#成功状态
success = 0
 
#追踪号已存在,已添加该单号
TrackNoIsExist = -11010101
 
#追踪号无效
TrackNoInvalid = -11010102
 
  • 初始化配置文件config.py(初始化并封装配置文件的数据)
import configparser    #导入configparser库,用于读取配置文件
import os 
 
class Config():
    def __init__(self):
        self.config = configparser.ConfigParser()
        self.conf_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), ‘conf.ini‘)    #获取制定配置文件所在路径
        self.config.read(self.conf_path, encoding=‘utf-8-sig‘)     #读取配置文件,编码格式为utf-8-sig
 
        self.conf = {
            ‘host‘: ‘‘, ‘user‘: ‘‘, ‘password‘: ‘‘, ‘db_test_buyer‘: ‘‘, ‘email‘: ‘‘, ‘upassword‘: ‘‘, ‘user_url‘: ‘‘, ‘success‘: ‘‘, ‘TrackNoIsExist ‘: ‘‘, ‘TrackNoInvalid ‘: ‘‘
                        }
        def get_conf(self):
        """
        配置文件读取,并赋值给全局参数
        :return:
        """
        self.conf[‘host‘] = self.config.get("test_db", ‘host‘)
        self.conf[‘user‘] = self.config.get("test_db", "user")
        self.conf[‘password‘] = self.config.get("test_db", "password")
        self.conf[‘db_test_buyer‘] = self.config.get("test_db", "db_test_buyer")
        . . . . . . 
        return self.conf
 
if __name__ == ‘__main__‘:
    Config()
  • 增加公共文件Common_Func.py(主要配置数据库连接、获取用户cookie等常用函数)
import Conf.config          #导入Conf文件夹下的config.py文件,用于初始化配置文件
import pymssql                #导入pymssql,用于连接SqlServer
import requests
import json
 
def Get_TrackNo():
    ‘‘‘初始化数据‘‘‘
    c = Conf.config.Config().get_conf()   #调用config.py文件的get_conf()函数
 
    ‘‘‘数据库配置‘‘‘
    db_host = c["host"]
    db_user = c["user"]
    db_password = c["password"]
    db_test_buyer = c["db_test_buyer"]
    db_test_user = c["db_test_user"]
 
    ‘‘‘连接SqlServer数据库‘‘‘
    conn_buyer = pymssql.connect(host=db_host, user=db_user, password=db_password, database=db_test_buyer)
    cur_buyer = conn_buyer.cursor()
    sql_buyer =sql = ‘SELECT TrackNO FROM TrackInfo02 WHERE (Email = ‘[email protected]‘)‘
    cur_buyer.execute(sql_buyer)
    trackno_result = cur_buyer.fetchall()
 
    ‘‘‘关闭数据库连接‘‘‘
    cur_buyer.close()
    cur_user.close()
 
    return trackno_result      #返回单号列表结果
 
def Get_Cookie():
    ‘‘‘用户登录,获取cookie<账号:[email protected]>‘‘‘
    c = Conf.config.Config().get_conf()   #调用config.py文件的get_conf()函数
    user_url = c["user_url"]
    user_email =c["email"]
    user_pwd = c["upassword"]
 
    data = {"Version": "xxx",
            "Method": "Signin",
            "SourceType": xxx,
            "Param":
                {"Email": user_email,
                "Password": user_pwd }
                }
    req = requests.post(user_url, json=data)
    uid = req.cookies.get(‘uid‘)
    return uid                              #返回用户cookie
  • 修改“增加单号”接口文件Addtrackno_test.py
# -*- coding: utf-8 -*-
import requests
import json
import unittest
import xlrd
import re
import Conf.config     #导入配置文件
import Common_Func      #导入公共文件Common_Func.py
 
 
class AddTrackNo(unittest.TestCase):
    ‘‘‘“(批量)增加单号”接口‘‘‘
 
    def setUp(self):
        ‘‘‘初始化数据‘‘‘
 
        ‘‘‘获取请求地址‘‘‘
        c = Conf.config.Config().get_conf()   #调用config.py文件的get_conf()函数
        self.buyer = c["buyer_url"]
 
        ‘‘‘获取状态码‘‘‘
        self.success = c["success"]      #成功的状态码
        self.TrackNoIsExist = c["TrackNoIsExist"]      #其它状态码
 
 
        ‘‘‘获取某账号下的单号列表‘‘‘
        self.trackno_result = Common_Func.Get_TrackNo()
 
        ‘‘‘获取某账号的cookie值‘‘‘
        self.user_cookie = Common_Func.Get_Cookie()
 
    def tearDown(self):
        pass
 
    def test_addtrackno_success(self):
        ‘‘‘成功_(批量)增加单号(状态码:0 保存成功)‘‘‘
 
        ‘‘‘获取某账号下的单号列表‘‘‘
        result = self.trackno_result
 
        ‘‘‘获取EXCEL表内的单号‘‘‘
        file = xlrd.open_workbook(r‘C:\Users\xx\test_trackno.xlsx‘)
        sheet = file.sheet_by_name(‘Sheet4‘)
        cols = sheet.col_values(0)
        n = len(cols)
 
        ‘‘‘去除重复单号,并post增加单号‘‘‘
        index = 0
        arylist=[]
        for row in result:
            a = re.findall(‘[a-zA-Z0-9]‘, str(row))
            sj = ‘‘.join(a)
            arylist.append(sj)
            index += 1
 
        j = 0
        for i in range(n):
            if(j == 5):
                break
            if(cols[i] not in arylist):
                if len(result)>= 40:
                    break
 
                else:
                    j += 1
                    data1 = {"Version": "1",
                             "Method": "AddTrackNo",
                             "Cookies": self.user_cookie,
                             "SourceType": 0,
                             "Param": {
                                "TrackNos": [cols[i]]}
                             }
                    req1 = requests.post(self.buyer_url, json=data1, headers={"Content-Type": "application/Json"} )
                    res = json.loads(req1.text)
                    print(res)
                    self.assertEqual(res[‘Code‘], self.success)        #使用配置文件数据进行断言
                    self.assertEqual(res[‘Json‘][‘Items‘][0][‘ResultCode‘], self.success)     #使用配置文件数据进行断言
  • 修改Run_Tests.py
import time, os
import sys
sys.path.append(‘./Interface‘)
 
import Conf.config   #导入配置文件
import unittest
from HTMLTestRunner import HTMLTestRunner
 
test_dir = ‘./Interface‘
 
file = unittest.defaultTestLoader.discover(test_dir, pattern=‘*_test.py‘)
 
if __name__ == ‘__main__‘:
    Conf.config.Config().get_conf()      #初始化配置文件
    now = time.strftime("%Y-%m-%d %H-%M-%S", time.localtime(time.time()))
    public_path = os.path.dirname(os.path.abspath(sys.argv[0]))
    filename = public_path + "\\Report\\" + now + "report.html"
    fp = open(filename, ‘wb‘)
    runner = HTMLTestRunner(stream=fp,
                            title="接口自动化报告",
                            description="详细描述如下:"
                            )
    runner.run(file)
    fp.close()
  • 接口自动化测试框架结构

小伙伴们看到这么多乱糟糟的代码肯定是已经头晕眼花,想马上关闭页面放弃治疗了是吧哈哈~下面本宝宝给大家列出了本次测试框架的结构,很清晰明了辣~大家记得要在每个文件夹下加上init.py文件哦,不懂为什么要这么做的小伙伴,谷歌和百度搜搜搜就出来啦!!本宝宝脑力有限,就将就看看吧哈哈哈我不管啦!

Conf/
  |-- init.py
  |-- conf.ini 
  |-- config.py
Interface/ 
  |-- init.py 
  |-- Common_Func.py.py 
  |-- Addtrackno_test.py 
Report/ 
  |-- report.html 
init.py
Run_Tests.py 
时间: 2024-10-11 20:42:20

关于接口自动化的那些事 - 基于 Python的相关文章

接口自动化:Jenkins 自动构建python+nose测试

参考: http://www.cnblogs.com/LanTianYou/p/6559916.html#_label1 http://blog.csdn.net/limm33/article/details/51191263 通过Jenkins自动化构建python nose测试分两步: 1. 创建节点(节点就是执行自动化测试的机器): 2. 创建任务并绑定节点(用指定的机器来跑我们创建的任务,这里我们选择执行一段脚本) 1,创建节点: jenkins->系统管理->管理节点->新增节

python接口自动化(三十三)-python自动发邮件总结及实例说明番外篇下(详解)

简介 发邮件前我们需要了解的是邮件是怎么一个形式去发送到对方手上的,通俗点来说就是你写好一封信,然后装进信封,写上地址,贴上邮票,然后就近找个邮局,把信仍进去,其他的就不关心了,只是关心时间,而电子邮件不像日常发送邮件的按天算,时间都是按 秒算的. 电子邮件的发送流程: 1.你使用某款电子邮件软件MUA:mail user agent --邮件用户代理,填写完成点击发送 2.在你点击发送的时候电子邮件软件发出去,到MTA:mail transfer agent--邮件传输代理,即email服务提

基于python的接口自动化实战(一)

最近接触了接口自动化,经过大约一个月的时间,利用工作之余,借助公司的项目,搭建了接口自动化框架(此框架是要实现脚本与数据的完全分离).整个过程中,最重要的就是实现思路,思路有了,实现起来还是不困难的. 第一篇就先记录一下搭建框架的大致思路. 1.首先,整个框架应该包含的内容 简单概括:执行测试用例,生成测试报告 2.怎么实现测试用例的执行 本框架中,使用Excel管理测试用例,所以整个框架的核心就是获取Excel表格中需要的数据(或者说获取执行每一个接口测试需要的数据) 整个的框架如下图所示:

实战:基于Python构建运维自动化平台

导语: 今天与大家一起探讨如何基于Python构建一个可扩展的运维自动化平台,也希望能与大家一起交流,共同成长. 此次分享将通过介绍OMServer.OManager具备的功能.架构设计.模块定制.安全审计.C/S结构的实现等几个方面的内容来展开. 为什么选择Python? 默认安装且跨平台 可读性好且开发效率高 丰富的第三方库(开发框架.各类API.科学计算.GUI等) 社区活跃&众多开发者. Python在腾讯的现状,根据去年内部提交组件语言统计,除去2.3.4前端技术,Python在高级编

python接口自动化框架

基于 python 的接口测试框架 接口测试 · jphtmt · 于 5 月前发布 · 最后由 jphtmt 于 4 月前回复 · 3553 次阅读 项目背景 公司内部的软件采用B/S架构,管理实验室数据,实现数据的存储和分析统计.大部分是数据的增删改查,由于还在开发阶段,所以UI界面的变化非常快,之前尝试过用python+selenium进行UI自动化测试,后来发现今天刚写好的脚本第二天前端就改了页面,又得重新去定位元素什么的,消耗大量的精力与时间维护自动化脚本.针对此种情况,对接口测试较为

如何基于Python构建一个可扩展的运维自动化平台

嘉宾简介 刘天斯 从事互联网运维工作已13年,目前就职于腾讯-互动娱乐部,负责游戏大数据的运营,曾就职于天涯社区,担任首席架构师/系统管理员. 热衷开源技术的研究,包括系统架构.运维开发.负载均衡.缓存技术.数据库.NOSQL.分布式存储.消息中间件.大数据及云计算.Mesos.Docker.DevOps等领域.擅长大规模集群的运维工作,尤其在自动化运维方面有着非常丰富的经验.同时热衷于互联网前沿技术的研究,活跃在国内社区.业界技术大会,充当一名开源技术的传播与分享者. 导言 受 Reboot

如何简单实现接口自动化测试(基于 python) 原博主地址https://blog.csdn.net/gitchat/article/details/77849725

如何简单实现接口自动化测试(基于 python) 2017年09月05日 11:52:25 阅读数:9904 GitChat 作者:饿了么技术社区 原文:如何简单实现接口自动化测试(基于 python) 关注微信公众号:GitChat 技术杂谈 ,这里一本正经的讲技术 一.简介 本文从一个简单的登录接口测试入手,一步步调整优化接口调用姿势,然后简单讨论了一下接口测试框架的要点,最后介绍了一下我们目前正在使用的接口测试框架pithy.期望读者可以通过本文对接口自动化测试有一个大致的了解. 二.引言

python接口自动化9-https请求(SSL)

前言 本来最新的requests库V2.13.0是支持https请求的,但是一般写脚本时候,我们会用抓包工具fiddler,这时候会报:requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) 小编环境: python:2.7.12 requests:2.13.0 fiddler:v4.6.2.0 一.SSL问题 1.不启用fiddler,直接发htt

python接口自动化2-发送post请求

前言 发送post的请求参考例子很简单,实际遇到的情况却是很复杂的,首先第一个post请求肯定是登录了,但登录是最难处理的.登录问题解决了,后面都简单了. 一.查看官方文档 1.学习一个新的模块,其实不用去百度什么的,直接用help函数就能查看相关注释和案例内容. >>import requests >>help(requests) 2.查看python发送get和post请求的案例 >>> import requests       >>> r