接口自动化(2)----如何编写接口自动化用例
1. 测试用例
1.1 了解测试用例
1)百度百科:什么是测试用例?
2)英文名:Test Case,简称TC
1.2 测试用例标题
# 用例 {1}_{2}_{3}_{4}_{5} 其中: 1代表业务模块 2代表接口抽象功能 3代表正向还是反向 4代表接口具体某一功能 5代表用例的重要细节描述,可以没有也可以有多次描述 # 举例说明 用例标题1:设备管理_添加设备_正测_添加一台店计设备 用例标题2:设备管理_添加设备_反测_添加一台闸机设备_闸机编码已存在
1.3 测试用例描述
前置条件: 登录:是否需要登录,什么角色登录 权限:账号是否有访问接口的权限 关联:是否对其他接口有依赖(只关心直接依赖) 测试步骤: 步骤:测试操作步骤 期望:执行操作步骤后需要进行断言(针对本接口或其他关联接口) # 注意:测试步骤中的步骤和期望可以多次出现
1.4 测试用例等级
2. python3下pytest+allure的安装使用
2.1 安装第三方包
1. 先安装pytest库 pip install pytest 2. 再安装allure-pytest库 pip install allure-pytest
2.2 安装allure html工具
Allure Framework是一款使用灵活的、支持多语言的测试报告工具。
第1步:下载工具:https://github.com/allure-framework/allure2/releases
第2步:添加环境变量(windows和linux下)
第3步:使用说明:allure generate [xml文件路径] -o [html文件路径] --clean
2.3 pytest的基本使用
1) 查找以test开头或结尾的函数执行
2) pytest执行用例命令:
pytest.main(['-s', '-v', 'file_path', "--alluredir=./report/xml"])
2.4 allure的基本使用
1 # -*- coding: utf-8 -*- 2 # @Time : 2019/9/16 16:38 3 # @Author : chinablue 4 5 import allure 6 7 @allure.feature("一级模块") 8 @allure.story("二级模块") 9 @allure.description(''' 10 前置条件: 11 1.登录:平台管理员 12 2.权限:有访问权限 13 3.关联数据:xxx 14 测试步骤: 15 1. 步骤:yyy 16 2. 校验:zzz 17 ''') 18 def test(): 19 with allure.step("步骤:yyy"): 20 pass 21 with allure.step("校验:zzz"): 22 pass 23 24 import pytest 25 case_flie = r"C:\Users\reconova\Desktop\0909\new\case\module_rank\tmp.py" 26 pytest.main(['-s', '-v', '{}'.format(case_flie), "--alluredir=./output/report/xml"]) 27 28 import os 29 cmd = "allure generate ./output/report/xml -o ./output/report/html --clean" 30 os.popen(cmd)
3. 编写接口测试用例的规则说明
实现思路:使用python版的allure库(依赖pytest库)来编写测试用例,并以html的形式呈现用例。
3.1 概念解释
1)测试用例:一个以test开头的函数。 2)测试类:一个以Test开头的类,类中可以包含多个测试用例。 3)测试模块:一个.py文件,文件中可以包含多个测试类。 4)测试集:一个测试集可以包含多个测试模块。
3.2 新建测试模块
${project_root}/case/module_rank/person.py
3.3 新建测试类
1)类名采用大驼峰,命名规则说明如下:
命名格式:Test{1}{2} # 1代表模块名称。如:Person,Device等 # 2代表接口抽象功能。如:Add,Delete,Edit,Detail,List等
2)举个栗子
# TestPersonAdd 代表人员管理模块的新增接口 # TestDeviceEdit 代表设备管理模块的编辑接口
3.4 新建测试方法
1)命名规则说明如下:
命名格式:test_{1}_{2}_(3) # 1代表正测还是反测 # 2代表接口具体功能 # 3代表用例重要细节描述,此部位可以没有也可以描述多次
2)举个栗子
# test_反测_添加设备_抓拍相机_设备编码已使用 # test_正测_添加人员_普通人员 # test_正测_添加人员_普通人员_只填必填
3.5 综合运用(一)
1 # -*- coding: utf-8 -*- 2 # @Time : 2019/9/23 11:15 3 # @Author : chinablue 4 # @File : person.py 5 6 7 class TestPersonAdd(): 8 9 def test_正测_人员添加_普通人员(self): 10 pass 11 12 13 class TestPersonDelete(): 14 15 def test_正测_人员删除_特殊人员(self): 16 pass 17 18 19 class TestPersonEdit(): 20 21 def test_正测_人员编辑_人员姓名(self): 22 pass 23 24 25 class TestPersonDetail(): 26 27 def test_反测_人员详情_人员id不存在(self): 28 pass 29 30 31 class TestPersonList(): 32 33 def test_正测_人员列表_通过人员性别筛选_男(self): 34 pass
3.6 allure的常用标签介绍
项目地址: https://github.com/allure-framework/allure-python
文档地址: https://docs.qameta.io/allure/
# 测试用例标签,分组第一层 1)@allure.feature("一级标签") # 测试用例标签,分组第二层 2)@allure.story("二级标签") # 测试用例级别 3)@allure.severity("用例等级") # 测试用例标题,默认使用函数名。 4)@allure.title("用例标题") # 动态生成功能, 常用于数据驱动的用例函数内部. 此方法会覆盖@allure.title("用例标题") 5)@allure.dynamic.title("用例标题") # 测试用例描述 6)@allure.description ("用例描述") # 测试用例步骤 7)@allure.step("用例步骤") # 在报告中呈现重要步骤的相关信息 8)@allure.attach()
3.7 综合运用(二)
学习目标:在测试用例中该如何运用allure标签
# -*- coding: utf-8 -*- # @Time : 2019/9/23 11:15 # @Author : chinablue # @File : person.py import allure @allure.feature("人员管理") @allure.story("人员添加") class TestPersonAdd(): @allure.description(''' 前置条件: 1.登录:平台管理员 2.权限:有访问权限 3.关联数据: 测试步骤: 1. 步骤:添加一个普通人员A 2. 校验:可以查看到人员A的详情信息 3. 校验:人员列表中可以查看到人员A ''') @allure.severity(allure.severity_level.NORMAL) def test_正测_人员添加_普通人员(self): with allure.step("步骤:添加一个普通人员A"): pass with allure.step("校验:可以查看到人员A的详情信息"): pass with allure.step("校验:人员列表中可以查看到人员A"): pass
4. 高效编写测试用例
实现思路:在pycharm中自定义模板代码,快速输出固定代码块
4.1 pycharm如何自定义模板代码块
1)打开pycharm后依次点击:File--Settings--Editor--Live Templates
2)点击加号(绿色)--点击Live Template
3)定义模板代码块
# 输入信息的含义说明 Abbreviation: 模板代码块的名字 Description: 模块代码块的描述 Template text:模板代码块的具体信息
4.2 举例说明
学习目标:通过自定义模板代码块,快速生成测试用例描述的内容模板
1. Abbreviation中输入内容:tcdesc 2. Description中输入内容:测试用例描述 3. Template text中输入内容如下: @allure.description(''' 前置条件: 1.登录:平台管理员 2.权限:有访问权限 3.关联数据: 测试步骤: 1. 步骤: 2. 校验: ''')