本文共 2427 字,大约阅读时间需要 8 分钟。
参数关联,也被称为接口关联,指的是接口之间通过特定参数建立的依赖关系。在接口自动化测试中,这种关联关系尤为重要,因为它决定了接口的调用顺序和数据流转。
最常见的场景之一是请求登录接口后获取token值,后续其他接口请求时将token作为请求参数传入。例如,在电商系统中,用户下单后会生成订单号,这个订单号又会被用于支付接口的调用中。这种依赖关系是接口自动化测试的重要考量因素。
以网上购物流程为例:
在上述流程中,订单号(orderNo)是关键参数,它使下单接口和支付凭证接口建立了关联。测试人员需要确保每次调用下单接口生成的订单号唯一,这样才能顺利调用下一个接口。
在PyTest框架中,参数关联可以通过两种方式处理:
直接在用例中按顺序调用接口:
import requestsimport jsonimport pytestdef test_order_pay(): '''创建订单并获取支付凭证''' # 调用下单接口 url_order = "https://gouwu.com/trade/order/purchase" data_order = { "goodsId": 10, "goodsSkuId": 33, "num": 2, "tradePromotion": { "type": 1, "promotionId": 1 }, "tradeDirectionArticle": { "articleId": 1 } } res_order = requests.post(url=url_order, json=data_order).text tradeNo = json.loads(res_order)['tradeNo'] # 调用获取支付凭证接口 url_pay = "https://gouwu.com/pay/pre/consum" data_pay = { "orderNo": tradeNo, "product": "alipayWapClient" } res_pay = requests.post(url=url_pay, json=data_pay).text res_pay = json.loads(res_pay) # 断言 assert res_pay['code'] == 0 assert 'payNo' in res_pay['data'] assert 'certificate' in res_pay['data'] 将依赖接口编写为Fixture函数:
@pytest.fixture()def get_order(): '''调用下单接口创建订单''' url_order = "https://gouwu.com/trade/order/purchase" data_order = { "goodsId": 10, "goodsSkuId": 33, "num": 2, "tradePromotion": { "type": 1, "promotionId": 1 }, "tradeDirectionArticle": { "articleId": 1 } } res_order = requests.post(url=url_order, json=data_order).text tradeNo = json.loads(res_order)['tradeNo'] yield tradeNodef test_pay(get_order): '''下单后调用支付接口并校验''' url_pay = "https://gouwu.com/pay/pre/consum" data_pay = { "orderNo": get_order, "product": "alipayWapClient" } res_pay = requests.post(url=url_pay, json=data_pay).text res_pay = json.loads(res_pay) # 断言 assert res_pay['code'] == 0 assert 'payNo' in res_pay['data'] assert 'certificate' in res_pay['data'] 参数关联是接口自动化测试中的核心概念之一,它直接影响测试用例的设计和执行流程。在实际项目中,我们需要根据业务需求设计关联参数,并通过合理的测试脚本进行验证。无论是流水式调用还是使用Fixture函数,关键在于确保接口依赖关系被正确处理,从而保证测试的准确性和可靠性。
转载地址:http://zgofk.baihongyu.com/