首页技术python接口自动化?自动化测试框架

python接口自动化?自动化测试框架

编程之家2026-06-27856次浏览

大家好,今天来为大家分享python接口自动化的一些知识点,和自动化测试框架的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

python接口自动化?自动化测试框架

使用python做接口自动化测试容易吗

为什么要做接口自动化测试?

在当前互联网产品迭代频繁的背景下,回归测试的时间越来越少,很难在每个迭代都对所有功能做完整回归。但接口自动化测试因其实现简单、维护成本低,容易提高覆盖率等特点,越来越受重视。

为什么要自己写框架呢?

使用Postman调试通过过直接可以获取接口测试的基本代码,结合使用requets+ unittest很容易实现接口自动化测试的封装,而且requests的api已经非常人性化,非常简单,但通过封装以后(特别是针对公司内特定接口),可以进一步提高脚本编写效率。

一个现有的简单接口例子

下面使用requests+ unittest测试一个查询接口

python接口自动化?自动化测试框架

接口信息如下

请求信息:

Method:POST

URL:api/match/image/getjson

Request:

{

python接口自动化?自动化测试框架

"category":"image",

"offset":"0",

"limit":"30",

"sourceId":"0",

"metaTitle":"",

"metaId":"0",

"classify":"unclassify",

"startTime":"",

"endTime":"",

"createStart":"",

"createEnd":"",

"sourceType":"",

"isTracking":"true",

"metaGroup":"",

"companyId":"0",

"lastDays":"1",

"author":""

}

Response示例:

{

"timestamp": xxx,

"errorMsg":"",

"data":{

"config": xxx

}

Postman测试方法见截图:

测试思路

1.获取Postman原始脚本

2.使用requests库模拟发送HTTP请求**

3.对原始脚本进行基础改造**

4.使用python标准库里unittest写测试case**

原始脚本实现

未优化

该代码只是简单的一次调用,而且返回的结果太多,很多返回信息暂时没用,示例代码如下

import requests

url=""

querystring={"category":"image","offset":"0","limit":"30","sourceId":"0","metaTitle":"","metaId":"0","classify":"unclassify","startTime":"","endTime":"","createStart":"","createEnd":"","sourceType":"","isTracking":"true","metaGroup":"","companyId":"0","lastDays":"1","author":""}

headers={'cache-control':"no-cache",'postman-token':"e97a99b0-424b-b2a5-7602-22cd50223c15"

}

response= requests.request("POST", url, headers=headers, params=querystring)

print(response.text)

优化第一版

调整代码结构,输出结果Json出来,获取需要验证的response.status_code,以及获取结果校验需要用到的results['total']

#!/usr/bin/env python#coding: utf-8'''

unittest merchant backgroud interface

@author: zhang_jin

@version: 1.0

@see:

'''import unittestimport jsonimport tracebackimport requests

url=""

querystring={"category":"image","offset":"0","limit":"30","sourceId":"0","metaTitle":"","metaId":"0","classify":"unclassify","startTime":"","endTime":"","createStart":"","createEnd":"","sourceType":"","isTracking":"true","metaGroup":"","companyId":"0","lastDays":"1","author":""

}

headers={'cache-control':"no-cache",'postman-token':"e97a99b0-424b-b2a5-7602-22cd50223c15"

}#Post接口调用

response= requests.request("POST", url, headers=headers, params=querystring)#对返回结果进行转义成json串

results= json.loads(response.text)#获取http请求的status_codeprint"Http code:",response.status_code#获取结果中的total的值print results['total']#print(response.text)

优化第二版

接口调用异常处理,增加try,except处理,对于返回response.status_code,返回200进行结果比对,不是200数据异常信息。

#!/usr/bin/env python#coding: utf-8'''

unittest merchant backgroud interface

@author: zhang_jin

@version: 1.0

@see:

'''import jsonimport tracebackimport requests

url=""

querystring={"category":"image","offset":"0","limit":"30","sourceId":"0","metaTitle":"","metaId":"0","classify":"unclassify","startTime":"","endTime":"","createStart":"","createEnd":"","sourceType":"","isTracking":"true","metaGroup":"","companyId":"0","lastDays":"1","author":""

}

headers={'cache-control':"no-cache",'postman-token':"e97a99b0-424b-b2a5-7602-22cd50223c15"

}try:#Post接口调用

response= requests.request("POST", url, headers=headers, params=querystring)#对http返回值进行判断,对于200做基本校验 if response.status_code== 200:

results= json.loads(response.text) if results['total']== 191: print"Success" else: print"Fail" print results['total'] else:#对于http返回非200的code,输出相应的code raise Exception("http error info:%s"%response.status_code)except:

traceback.print_exc()

python接口自动化之token登录

前言

有些登录不是用cookie来验证的,是用token参数来判断是否登录。

token传参有两种一种是放在请求头里,本质上是跟cookie是一样的,只是换个单词而已;另外一种是在url请求参数里,这种更直观。

一、登录返回token

1.如下图的这个登录,无cookies

2.但是登录成功后有返回token

二、请求头带token

1.登录成功后继续操作其它页面,发现post请求的请求头,都会带token参数

2.这种请求其实比cookie更简单,直接把登录后的token放到头部就行

三、token关联

1.用脚本实现登录,获取token参数,获取后传参到请求头就可以了

2.如果登录有验证码,前面的脚本登录步骤就省略了,自己手动登录后获取token

import requests

header={#登录抓包获取的头部

"User-Agent":"Mozilla/5.0(Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",

"Accept":"/",

"Accept-Language":"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",

"Accept-Encoding":"gzip, deflate",

"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",

"X-Requested-With":"XMLHttpRequest",

"Content-Length":"423",

"Connection":"keep-alive"

}

body={"key1":"value1",

"key2":"value2"}#这里账号密码就是抓包的数据

s= requests.session()

login_url=" "#自己找带token网址

login_ret= s.post(login_url, headers=header, data=body)

token= login_ret.json()["token"]

post_url=" "

header["token"]= token

header["Content-Length"]="9"

body1={

"key":"value"

}

post_ret= s.post(post_url, headers=header, data=body1)

print post_ret.content

python自动化测试怎么将多个依赖数据

接口测试中,有些场景接口间存在着数据依赖的问题,比如说提交订单前需要用户先登录等等,下面就用两个小案例说说数据依赖的问题。

两个接口,一个接口(project_add)用来创建测试项目,一个接口(env_add)用来创建测试环境,env_add接口需依赖project_add接口返回的project_id字段数据。

一、Postman解决数据依赖的问题

第一步,project_add接口,Tests中写js代码,将需依赖的字段添加到环境变量中

第二步:在env_add接口的Pre-request Script中写js代码,把第一个接口拿到的参数赋值

第三步:再将project_id配置到Body中prj_id字段中

这样数据依赖的问题就搞定了

二、用python代码实现接口数据依赖

用代码解决数据依赖的方法有多种,下面用反射来解决数据依赖的问题。

反射它可以把字符串映射到实例的变量或者实例的方法然后,可以去执行调用、修改等操作。

它有四个重要的方法:

getattr获取指定字符串名称的对象属性

setattr为对象设置一个对象

hasattr判断对象是否有对应的对象(字符串)

delattr删除指定属性

classRelyData(object):

project_id=Noneprint(RelyData.project_id)

setattr(RelyData,"project_id","111")print(getattr(RelyData,"project_id"))

定义了一个RelyData()类,里面设置了一个类属性,project_id=None,然后再用setattr函数为对象RelyData里面project_id属性设置了新值,最后再用getattr函数取出里面的值,这是个属性值替换的过程。

classTest(unittest.TestCase):defsetUp(self):pass

deftest_1(self):"""添加项目接口"""url=

""headers={'Content-Type':

'application/x-www-form-urlencoded'}

datas={"prj_name":"baidu search","description":"百度搜索"}

response= requests.post(url, data=datas, headers=headers)print("response:", response.json())

END,本文到此结束,如果可以帮助到大家,还望关注本站哦!

padding是什么意思 padding是内边距还是外边距枯法者训练攻略,枯萎者技能