python2.7接口自动化整理

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

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

废话不多说~

一,接口自动化:

(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就好好学吧,哈哈哈哈~ 我也在学,有歧义大佬勿喷,只是想深入一下自己理解!










 

猜你喜欢

转载自www.cnblogs.com/testling/p/11622987.html