当前位置 : 主页 > 网络安全 > 测试自动化 >

day12接口自动化测试框架

来源:互联网 收集:自由互联 发布时间:2021-06-19
1.jsonpath模块的使用 import jsonpath #使用jsonpath模块可以很快获取json数据中的values的值 dic={ "error_code": 0, "stu_info": [ { "id": 2057, "name": "xiaohei", "sex": "nan", "age": 29, "addr": "beijing", "grade": "tianxi

1.jsonpath模块的使用

import jsonpath

#使用jsonpath模块可以很快获取json数据中的values的值
dic={
"error_code": 0,
"stu_info": [
{
"id": 2057,
"name": "xiaohei",
"sex": "nan",
"age": 29,
"addr": "beijing",
"grade": "tianxie",
"phone": "18712321234",
"gold": 100
}
]
}
#使用‘..‘ 不管在第几层都能正常获取到,如果存在返回的结果类型是list,不存在key值返回False

s=jsonpath.jsonpath(dic,‘$..name‘)

print(s)

2.预期结果分割
s1=‘error_code=0,name!=xiaohei,age>18‘

seqs=[‘!=‘,‘>=‘,‘<=‘,‘>‘,‘<‘,‘=‘,‘in‘,‘not‘]

s1_list=s1.split(‘,‘)

dic=[]
for s in s1_list:
for seq in seqs:
if seq in s:
key,value=s.split(seq)
tmp=[key,seq,value]
dic.append(tmp)
break #找到符合条件的符号后直接停止内层循环

print(dic)
3.参数化请求主要是生成手机号、身份证、邮箱、时间戳,并返回字典格式的数据
#主要是生成手机号、身份证、邮箱号import randomimport stringimport timeclass ParseParam:    func_map=[‘phone‘,‘email‘,‘id_card‘,‘cur_time‘]    def __init__(self,param=None):        self.param=param    def phone(self):        phone_start=["130","131","132","155","156","186","134"                     ,‘135‘,‘181‘,‘137‘]        start=random.choice(phone_start)        phone_end=random.randint(0,99999999)        end=str(phone_end).zfill(8)        return start+end    def email(self):        email_end=[‘163.com‘,‘qq.com‘,‘126.com‘,‘sina.com‘]        end=random.choice(email_end)        start_str=‘API_TEST_‘        email_start=‘‘.join(random.sample(string.ascii_uppercase+string.digits,6))        return start_str+email_start+end#生成身份证的方法后续自己补    def id_card(self):        return ‘5652343242343434343‘#返回当前时间戳    def cur_time(self):        return  int(time.time())#使用生成的phone,id_card,email参数化    def parase(self):        for func in self.func_map:            tmp=str(getattr(self,func)())            # print(func,tmp,type(func),type(tmp))            self.param=self.param.replace(‘<%s>‘%func,tmp)        return self.param#获取请求数据生成字典    def strTodic(self):        data={}        parase=self.param.split(‘&‘)        for i in parase:            tmp=i.split(‘=‘)            # print(tmp)            if len(tmp)>1:  #防止用例书写不规范导致出错                key,value=tmp                data[key]=value        return dataif __name__ == ‘__main__‘:    s=‘username=niuyang&passwd=aA123456&emai=<email>&phone=<phone>&id_card=<id_card>&cur_time=<cur_time>‘    p=ParseParam(s)    # res=getattr(p,‘email‘)  #获取一个对象中的属性(方法、变量)    # print(res()    p.parase()    data=p.strTodic()    print(data)
网友评论