博客
关于我
python+pytest接口自动化 —— 参数关联
阅读量:796 次
发布时间:2023-03-07

本文共 2427 字,大约阅读时间需要 8 分钟。

参数关联在接口自动化测试中的应用

参数关联,也被称为接口关联,指的是接口之间通过特定参数建立的依赖关系。在接口自动化测试中,这种关联关系尤为重要,因为它决定了接口的调用顺序和数据流转。

参数关联的场景

最常见的场景之一是请求登录接口后获取token值,后续其他接口请求时将token作为请求参数传入。例如,在电商系统中,用户下单后会生成订单号,这个订单号又会被用于支付接口的调用中。这种依赖关系是接口自动化测试的重要考量因素。

参数关联的示例

以网上购物流程为例:

  • 用户在购物车中选择商品并点击【去结算】,进入订单确认页。
  • 点击【提交订单】后,系统会调用下单接口创建订单,并返回唯一的交易订单号(tradeNo)。
  • 系统会根据生成的订单号,调用获取支付凭证接口,调起支付页面。
  • 支付页面完成后,系统会调用支付接口进行实际支付,支付结果会返回给请求方。
  • 在上述流程中,订单号(orderNo)是关键参数,它使下单接口和支付凭证接口建立了关联。测试人员需要确保每次调用下单接口生成的订单号唯一,这样才能顺利调用下一个接口。

    脚本编写方法

    在PyTest框架中,参数关联可以通过两种方式处理:

    1. 流水式调用

    直接在用例中按顺序调用接口:

    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']

    2. 使用Fixture函数

    将依赖接口编写为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/

    你可能感兴趣的文章