python接口测试脚本_Python脚本做接口测试如此简单之抛弃工具(二)

学习是为了更好的实践运用,之前做接口测试一直用的postman、fiddler,感觉用工具还是有些局限性,于是想着把学到的python灵活运用到接口测试中,于是就有了以下案例,思考着想用unittest做个简单的接口测试脚本,可以支持单传参和多传参,平时工作中可以随时使用,不但方便,还可以巩固到学习的知识,。

思考点:

1、脚本支持单传参和多传参,利用了for循环和ddt实现

2、接口headers里需传入登录后的token值,利用了unittest每次运行用例时先执行setup初始化好headers#unittest+ddt实现的接口测试脚本

import requests,json,unittest,xlrd,os

from ddt import ddt,data,unpack

import requests

@ddt

class Test(unittest.TestCase):

zp_url = 'http://test.com' # 域名

params = [{"self_introduce": "我是参数1!"}, {"self_introduce": "我是参数3!"}] # 接口参数

@classmethod

def setUpClass(cls):

cls.headers = {"Content-Type": "application/json", "Authorization": "token"} # 请求头

cls.zp_login_url = '/login' # 登录接口地

cls.zp_login_param = {"captcha": "1234", "client_type": 2, "login_type": 1, "mobile": 18221124103} # 登录传参

try:

res = requests.post(url=cls.zp_url + cls.zp_login_url, headers=cls.headers, json=cls.zp_login_param)

cls.headers['Authorization']=res.json()['data']['token']

except Exception:

print('参数错误')

cls.url = '/update_user_info' # 接口地址

cls.method='POST'

@classmethod

def tearDownClass(cls):

pass

def sendGet(self,api_url,param):

try:

res=requests.get(url=api_url,headers=self.headers).json()

print(res)

except Exception:

print('参数错误')

def sendPost(self,api_url,param):

try:

res = requests.post(url=api_url, headers=self.headers, json=param).json()

print(res)

except Exception:

print('参数错误')

@data(*params)

def test(self,params):

if self.method=='GET' or self.method=='get' or self.method=='Get':

self.sendGet(self.zp_url+self.url,params)

elif self.method== 'POST' or self.method=='post' or self.method=='Post':

self.sendPost(self.zp_url+self.url,params)

else:

print('请传正确请求方式GET或POST')

if __name__== '__main__':

unittest.main()

"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test.py

{'code': 0, 'data': {}, 'msg': '成功'}

..

----------------------------------------------------------------------

{'code': 0, 'data': {}, 'msg': '成功'}

Ran 2 tests in 0.462s

OK

Process finished with exit code 0#unittest实现的接口测试脚本

import requests,json,unittest,xlrd,os

from ddt import ddt,data,unpack

import requests,json

@ddt

class Test(unittest.TestCase):

zp_url = 'http://test.com' # 域名

@classmethod

def setUpClass(cls):

cls.headers = {"Content-Type": "application/json", "Authorization": "token"} # 请求头

cls.zp_login_url = '/login' # 登录接口地址

cls.zp_login_param = {"captcha": "1234", "client_type": 2, "login_type": 1, "mobile": 18221124103} # 熟仁直聘登录传参

try:

res = requests.post(url=cls.zp_url + cls.zp_login_url, headers=cls.headers, json=cls.zp_login_param)

cls.headers['Authorization']=res.json()['data']['token']

except Exception:

print('参数错误')

cls.url = '/update_user_info' # 接口地址

cls.params = [{"self_introduce": "我是参数1!"}, {"self_introduce": "我是参数3!"}] # 接口参数

cls.method='POST'

@classmethod

def tearDownClass(cls):

pass

def sendGet(self,api_url,param):

try:

res=requests.get(url=api_url,headers=self.headers).json()

print(res)

except Exception:

print('参数错误')

def sendPost(self,api_url,param):

try:

res = requests.post(url=api_url, headers=self.headers, json=param).json()

print(res)

except Exception:

print('参数错误')

def test(self):

for param in self.params:

if self.method=='GET' or self.method=='get' or self.method=='Get':

self.sendGet(self.zp_url+self.url,param)

elif self.method== 'POST' or self.method=='post' or self.method=='Post':

self.sendPost(self.zp_url+self.url,param)

else:

print('请传正确请求方式GET或POST')

if __name__== '__main__':

unittest.main()

"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test.py

{'data': {}, 'code': 0, 'msg': '成功'}

.

----------------------------------------------------------------------

Ran 1 test in 0.515s

OK

{'data': {}, 'code': 0, 'msg': '成功'}

Process finished with exit code 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值