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

博客探讨了接口自动化测试中如何处理接口参数,尤其是对于get、post、put接口。通过将接口定义与用例层分离,减少因接口变更导致的大量修改。文章提供了具体的实现思路和代码示例,包括get接口的参数替换与删除,以及post接口中json body体的处理,特别是处理嵌套参数的挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


接口自动化测试中,往往测试的接口参数可能较多且测试场景复杂,比如测试参数必填、参数值非法,用例层如果直接定义接口的参数,存在大量重用数据且如果接口发生变更(删除一个参数、修改一个参数名)需要在用例层修改很多地方

为解决这个问题,肯定是要将接口定义和用例层分离处理

具体思路如下:

1.按模块**将接口定义在对应的yaml文件中,参数使用${parmaname}表示**(方便使用string.safe_substitute()方法进行参数的替换)
*substitute的解释可以查看这篇文章《python-字符串的模板替换》*
2.在baseapi这个父类的__init__方法中读取接口yaml的内容
3.业务api类继承baseapi,在具体接口方法中根据关键字拿到接口定义,根据case层传过来的参数做参数替换,替换后的内容去调用requestUtil中封装的接口处理方法
4.requestUtil的接口处理方法将接口参数没有被替换的${param}进行删除,返回给业务api
5.业务api调用requestsUtil封装的api方法,去发起请求

get接口按这个思路实现很简单,但是post、put接口因为其请求body体是json接口,处理起来稍微复杂一些

样例代码如下:
首先从简单的get接口开始:GET /v1/domains/ d o m a i n i d / p o l i c y 这个接口只有一个路径参数 {domain_id}/policy 这个接口只有一个路径参数 domainid/policy这个接口只有一个路径参数{domain_id}需要替换,headers中有一个$authtoken需要替换。

  1. 在yaml中这样定义接口:
show_domain_policy:
  method: get
  url: /v1/domains/${
   domain_id}/policy
  headers:
      Content-Type: application/json;charset=utf8
      authToken: $authtoken

2.在baseapi的init中定义从yaml文件中读取该业务api对应文件的所有api定义,会赋值到self.apiconfig变量

class BaseApi():
    __envdir = DIR_NAME + "/conf/env.yml"
    env =  yamlUtil(__envdir).readyaml()
    def __init__(self,serviceyaml):
        self.baseurl = self.env['protocl']+'://'+self.env['envConfig'][self.env['default']] ##从env文件读取参数拼接调用域名
        apidir  = os.path.abspath(os.path.realpath(__file__) + os.path.sep +'../')+'/apiyaml/'+serviceyaml
        self.apiconfig =yamlUtil
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值