前言
好多同学写自动化脚本时, 只会零零散散地写断言, 采用普通脚本去执行, 不存在统一的用例管理, 也没有可视化测试报告。
去掌握, 得以批量地执行接口用例, 多条断言又不会相互打断, 进而产出可视化报告, 这是接口自动化从零散脚本升级成为项目框架的必然要经历的一个步骤。
本篇基于 接口自动化实战,新手友好,代码直接复制运行。
一、环境安装
pip install pytest requests allure-pytest二、基础规则用于对测试文件进行命名, 其命名方式为: .py , 测试函数命名规则是: def () , 直接运行命令所用格式为: .py -s , 三、重点在于: 批量断言(此乃核心痛点)。
原生 遇到第一个失败就终止执行。
如果想要一次性将所有错误进行抛出, 那么可以采用使用 . 的方式, 或者还能够运用多条断言去配合那种不会中断的写法。
import requests import pytest def test_query_order(): url = "订单查询接口地址" resp = requests.get(url) res = resp.json() errors = [] # 批量校验,收集所有异常,不会中途停止 if res["code"] != 200: errors.append(f"业务码错误:{res['code']}") if res["data"]["pay_status"] != 0: errors.append(f"订单状态不正确") if not res["data"]["orderNo"]: errors.append("订单号为空") assert len(errors) == 0, f"用例失败:{errors}"四、结合 Token 实现完整 接口用例
import requests base_url = "测试地址/api" def get_token(): login_json = {"username":"test01","password":"123456"} r = requests.post(f"{base_url}/login",json=login_json) return r.json()["data"]["token"] headers = {"Authorization":get_token()} def test_create_order(): data = {"goodsId":1001,"num":1} resp = requests.post(f"{base_url}/order/create",json=data,headers=headers) res = resp.json() assert res["code"] == 200五、生成 测试报告
执行命令:
pytest test_order.py -s --alluredir=report allure generate report -o allure_html --clean allure open allure_html自动生成那种用于网页的可视化报告呈现, 把成功的用例、失败的用例以及失败的原因展示出来, 这般挺适合提交给团队的。
六、不能将新手常碰见的坑函数, 命名成非Test开头的格式, 识别不到对应的案例禁止同时使用, 普通脚本的执行方式别让一条用例存在多个独立情况, 出现报错要直接予以中断, 优先采用错误收集的方式来做批量断言的总结。
该框架属于接口自动化的主流框架范畴, 若能掌握批量断言以及报告相关事宜, 那么你所编写的脚本便不再仅仅只是单纯简单的范例演示了, 而是能够作为正式项目当中的自动化代码来使用了。
互动进行提问, 在你去撰写自动化内容的时候, 有没有碰到那种断言失败之后就直接终止了, 从而没办法看到全部校验方面的问题呢?