栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

接口自动化测试怎么减少接口参数更新对用例的影响

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

接口自动化测试怎么减少接口参数更新对用例的影响

【问题描述】

        工程中post请求的body体因为较多参数是非必填参数,如果像get接口那样将post接口的body定义写在yaml文件中,case写起来就比较复杂,所以直接在case中传入接口的body参数

        对于创建用户接口来说,其不同的验证用例总是将其通用的body体进行某个变量的修改,然后调用进行验证

之前的写法为:

def test_adduser_invalidCase3(self):
jsonbody ={"user":{"name":"auto"+getRandomString(),"domain_id":getDomainId,"enabled":False,"password":self.g_data["g_userPwd"]}}
'''
case api调用
'''
def test_adduser_invalidCase2(self):
jsonbody ={"user":{"name":"auto"+getRandomString(),"domain_id":getDomainId,"enabled":True,"password":self.g_data["g_userPwd"]}}
'''
case api调用
'''
def test_adduser_invalidCase1(self):
jsonbody ={"user":{"name":"auto"+getRandomString(),"domain_id":"","enabled":False,"password":self.g_data["g_userPwd"]}}
'''
case api调用
'''

可以看到jsonbody 结构是一样的,只是不同的case更新要验证的keyvalue

这样写会带来一个问题:如果jsonbody体有更新(新增了一个必填字段,参数name改成了username),那么需要在case文件中对用到的case用例一个个更新body

那么如何解决这个问题呢?

目前想到的解决办法是:

1.在case类中初始化一个类变量赋值为接口的body体

2.增加一个getjsonbody()方法,返回这个json体

3.不同case去创建用户时,需要更新name,这些唯一性参数,需要在getjsonbody()方法中,对jsonbody的这些唯一性参数进行更新

4.不同case调用getjsonbody拿到body体后,根据case情况,修改有区别的参数

初始化及getbody方法参考如下

def setup_class(self):
super().setup_class(self)
self.testapi = userApi()
self._jsonOSUSERuserbody = {"user": {"name": "autotest" + getRandomString(), "domain_id": _domainId,
"password": self.g_data["g_userPwd"], "email": getRandomString() + "@qq.com",
"areacode": "0086", "enabled": True, "pwd_status": False,
"phone": raddomPhone(),
"access_mode": "default"}}

def addOsUserBody(self):
returnjsonbody = copy.deepcopy(self._jsonOSUSERuserbody)
#复制一个变量去更新并返回,否则会对self._jsonOSUSERuserbody这一个变量进行更新,且后面的用户会引用这同一个变量
returnjsonbody["user"]["name"] = "a" + getRandomString()
returnjsonbody["user"]["email"] = getRandomString() + "@qq.com"
returnjsonbody["user"]["phone"] = raddomPhone()
return returnjsonbody

case 创建用户必填参数为空

def test_addOSUSERusers_invalidCase2(self):
jsonbody = self.addOsUserBody()
jsonbody["user"]["name"] =""

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/599452.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号