php网站开发技术训练心得,广东专业移动网站建设哪家好,云南凡科建站,抖音关键词排名系统目录#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结#xff08;尾部小惊喜#xff09; 前言
什么是参数关联导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结尾部小惊喜 前言
什么是参数关联
参数关联也叫接口关联即接口之间存在参数的联系或依赖。在完成某一功能业务时有时需要按顺序请求多个接口此时在某些接口之间可能会存在关联关系。
比如B接口的某个或某些请求参数是通过调用A接口获取的即需要先请求A接口从A接口的返回数据中拿到需要的字段值在请求B接口时作为请求参数传入。
有哪些场景
最常见的场景之一便是请求登录接口后获取到token值后续其他接口请求时需要将token作为请求参数传入。
再比如下单–支付场景调用下单接口生成订单后会返回订单号订单号传给支付接口进行支付。
参数关联场景
以最常见的网上购物为例对应的场景及请求我们可以大致简化如下可联想某宝购物流程
用户在购物车选择商品点击【去结算】进入订单确认页订单确认页点击【提交订单】这时会先请求下单接口创建订单
紧接着会拿创建的订单去请求获取支付凭证接口这个接口会调起支付页面也就是输入密码的支付界面
输入支付密码后会请求支付服务的支付接口进行实际支付支付的结果会返回给请求方告知是否支付成功
这个流程中涉及到的接口其实都是有关联的我们要对整个流程进行测试那么就需要按顺序调用所有这些涉及到的接口。
但这里我们只需要弄明白参数关联那么以下单接口和获取支付凭证接口为例举例说明就够了即先请求下单接口生成订单号再拿这个订单号去请求获取支付凭证接口才能调起支付界面并进行支付。
下单接口如下 接口地址服务器/trade/order/purchase 请求类型post 请求参数
{goodsId: 10, //商品idgoodsSkuId: 33, //sku idnum: 2, //购买数量tradePromotion: { //选择的优惠项type: 1, //类型1优惠券promotionId: 1 //优惠id}
}返回值 data
{code: 0,msg: 成功,data: {tradeNo: 0020220116204344962706666 //交易订单号},t: 1639658625474
}获取支付凭证接口如下
接口地址服务器/pay/pre/consum 请求类型post 请求参数
{orderNo:0020220116204344962706666, //交易订单号product:alipayWapClient //支付渠道alipayWapClient支付宝手机网页支付
}返回值 data
{code: 0,msg: 成功,data: {payNo:123213213219379213,certificate: form name\punchout_form\ method\post\ action\xxxxxx},t: 1639659171031
}其中orderNo字段使这两个接口关联了起来。因为每次生成的订单号都不一样所以在测试这个场景的时候就需要使这两个接口的参数进行关联才能走通。
脚本编写
那么在pytest框架的自动化测试中参数关联可以怎样处理呢
这里提供两种思路如下 根据业务场景的调用时序在用例中按顺序调用接口 将依赖的接口编写成fixture函数并使用yield返回下个接口需要的参数
1、在用例中按顺序调用 代码示例如下
import requests
import json
import pytestdef test_order_pay():创建订单-获取支付凭证调起支付界面:return:# 先调用下单接口生成订单url_order https://gouwu.com/trade/order/purchasedata_order {goodsId: 10,goodsSkuId: 33,num: 2,tradePromotion: {type: 1,promotionId: 1},tradeDirectionArticle: {articleId: 1}}res_order requests.post(urlurl_order, jsondata_order).texttradeNo json.loads(res_order)[tradeNo]# 再请求获取支付凭证接口url_pay https://gouwu.com/pay/pre/consumdata_pay {orderNo: tradeNo, # tradeNo通过下单接口获取product: alipayWapClient}res_pay requests.post(urlurl_pay, jsondata_pay).textres_pay json.loads(res_pay)# 断言assert res_pay[code]0assert res_pay[data][payNo]assert res_pay[data][certificate]if __name__ __main__:pytest.main()上面的代码只是流水式的进行调用我们还可以先将每个接口请求封装成单独的函数在测试用例中只需按照顺序调用这些函数即可。
2、使用Fixture函数 pytest中Fixture函数可以参考我之前的文章pytest-Fixture(固件) 定义Fixture函数代码示例如下
pytest.fixture()
def get_order():请求下单接口创建订单:return:url_order https://gouwu.com/trade/order/purchasedata_order {goodsId: 10,goodsSkuId: 33,num: 2,tradePromotion: {type: 1,promotionId: 1},tradeDirectionArticle: {articleId: 1}}res_order requests.post(urlurl_order, jsondata_order).texttradeNo json.loads(res_order)[tradeNo]yield tradeNo在测试函数中调用上面定义的fixture函数代码示例如下
def test_pay(get_order):下单-支付场景校验:param get_order: 调用上面的Fixture函数函数名get_order即返回的tradeNo:return:url_pay https://gouwu.com/pay/pre/consumdata_pay {orderNo: get_order, # get_order即为上面定义的fixture函数返回值product: alipayWapClient}res_pay requests.post(urlurl_pay, jsondata_pay).textres_pay json.loads(res_pay)# 断言assert res_pay[code] 0assert res_pay[data][payNo]assert res_pay[data][certificate]参数关联在接口自动化测试中是必然会遇到的场景设计关联参数的用例会直接影响到用例的维护当然这也是在接口自动化项目的架构设计时就需要考虑的问题。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图
一、Python编程入门到精通 二、接口自动化项目实战 三、Web自动化项目实战 四、App自动化项目实战 五、一线大厂简历 六、测试开发DevOps体系 七、常用自动化测试工具 八、JMeter性能测试 九、总结尾部小惊喜
放飞心灵追寻梦想奋斗是照亮前行的指南针。勇敢闯荡不停探索只有努力才能书写属于自己的传奇。相信自己坚持不懈终将创造属于自己的辉煌人生激情奋进拼尽全力在奋斗中绽放出绚丽的人生华彩
勇攀高峰超越自我奋斗是蜕变的力量。坚守初心追逐梦想只有拼搏才能创造非凡。相信自己砥砺前行终将书写属于自己的辉煌篇章
心怀信念燃起成功的火焰奋斗是成就自我的征途。跨越困境开创未来只有拼搏才能绽放自己的辉煌。相信自己坚持不懈迈向属于自己的辉煌巅峰勇往直前战胜困难在奋斗中铸就人生华章