ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python2.7接口自动化整理

2019-10-04 20:04:53  阅读:217  来源: 互联网

标签:return 请求 url args python2.7 接口 params result 自动化


当我们在测试知识海洋玩的正嗨时,收到一个需求,被告知这个需求在何时何时上,心中肯定万马奔腾!

 

不过作为测试,我们要保证需求质量同时,也需要提升自己测试技能,从而高效完成测试工作。

废话不多说~

 

一,接口自动化:

 

(1)对收到一个接口文档,我们肯定需要对这个接口进行接口测试,我们可以先写一个请求函数出来,然后在用例里面进行调用这个函数。

 

get请求:

那么这种请求方式就是参数放在链接里面,在fidder中就是webfroms 里面可以看到参数

例子:

获取验证码接口:

def users_sendOtp(params={}):
"""
发送验证码
请求方式:get
:return:
"""
url=HOST+'/users/sendOtp'
result=requests.get(url=url,params=params,proxies=proxies,verify=False)
return result

注:
proxies和verify=False可以不带上


下面为调用这个函数的测试用例:

def test_send_otp_13(self):
    """
发送验证码,params方式传参,传入全部必填参数
:return:
"""
result=users_sendOtp(params={
# 'userLoginType': '9421511119',
'userLoginType':time.strftime('zhumandi@%Y%m%d%H%M%S.com',time.localtime()),
'type': 'lend',
'userExistCheck': 'true'

})
# print result
self.assertEqual(result.status_code, 200, "fail".format(result.status_code))


post请求类似:
不过post请求涉及到传参数不同的问题,我们先写一个更新body的函数

def test_user_addAppConfig(kitc={}):
"""
给app添加详细信息接口
请求方式:post
:return:
"""
url=HOST+'/users/addAppConfig'
body={
"androidId": "string",
"appVersion": "string",
"deviceDetails": "string",
"deviceToken": "string"
}
args = update_args(body, kitc)
ret=requests.post(url=url,proxies=proxies,json=args,verify=False)
return ret

这里面
update_args 就是一个更新body的函数 具体如下:
def update_args(dict_args=None, new_dict=None, **kwargs):
if kwargs:
dict_args.update(kwargs)
if new_dict:
dict_args.update(new_dict)
return dict_args

实际用例当中就是调用这个函数,进行传参就行
result=test_user_addAppConfig({

})


(2)以上讲的是我们如何进行写接口自动化用例,当然会存在 出现问题时,我们要去找参数,不简单明了。我们可以把发起请求这个动作封装一下。

def httprequest(url,params,method,**kwargs):
#先判断是get请求还是post请求
#定义result为全局变量 两种方式:赋值和global
global result
if method.upper()=='GET':
try:
#发起get请求
args=update_args(kwargs)
result=requests.get(url=url,json=args,params=params,verify=False,proxies=proxies)
except Exception as e:
raise e
elif method.upper()=='POST':
try:
#发起post请求
args = update_args(kwargs)
result=requests.post(url=url,json=args,params=params,verify=False,proxies=proxies)
except Exception as e:
raise e
return result


这个函数就是把发起请求这个动作封装成一个函数,下面看具体的调用方式:


def test_users_logout1():
"""
退出登录
:return:
"""
#发起HTTP请求
re=httprequest(url=HOST+'/users/logout',method='GET',params={'AUTH_TOKEN':'fbkejsfvka3476t9320975834rbeow5yt239rh3'})

是不是简洁很多. 我们只需要传url 请求方式(post或者get) 然后有需要params传参就是传 不需要就params={} 就行 当然也可以加请求参数
 **kwargs很好的解决了这个问题



(3)我们发现第二种方式,写参数很麻烦,我们可以这么弄,先搞个excel表格,把请求方式 method url params、或者存在的body 写到一个表格中

 

 

 

具体这样,当然 里面字段不用介意。下面看具体的测试用例举例:

def test_addAppConfig_1(self):
"""
给app添加详细信息,传入全部参数,添加成功
请求方式:post
:return:
"""
  
  file=r'E:\Apitest\test.xls'

book = xlrd.open_workbook(file) # 打开excel文件
sheet = book.sheet_by_index(0) # 通过索引打开第一个表
nrows = sheet.nrows # 获取所有行数

nrow_value = sheet.row_values(1)#获取表格中的值 具体是第几行
  


  那么url 就是(1,1)method为(1,3)以此类推
ret=httprequest(url=nrow_value[1],method=nrow_value[3],params=nrow_value[2],data=nrow_value[4])
print ret

这种方式是第二种方式的延伸。我们写测试用例时,只需要复制粘贴,前提我们把这个表格整理好就行。
nrow_value = sheet.row_values(number)#只需要修改这个number


喜欢python就好好学吧,哈哈哈哈~ 我也在学,有歧义大佬勿喷,只是想深入一下自己理解!




 

 

 

 

 

 







 

 

标签:return,请求,url,args,python2.7,接口,params,result,自动化
来源: https://www.cnblogs.com/testling/p/11622987.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有