接口自动化测试用例层对接口参数的传递(一)

本文探讨了在接口测试中遇到的问题,即当POST请求的body包含多个非必填参数时,如何优雅地管理测试用例。作者提出了一种解决方案,通过在测试类中初始化一个类变量来存储基本的jsonbody,并提供一个getjsonbody()方法来获取和更新body中的特定参数。这种方法可以避免因body结构变化而逐个修改测试用例。案例展示了如何使用此方法优化创建用户接口的测试用例。
摘要由CSDN通过智能技术生成

【问题描述】

        工程中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"] =""

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值