IT评测·应用市场-qidao123.com

标题: 黑马客达天下-接口测试-Postman+Pytest+Allure+Jenkins实现连续集成 [打印本页]

作者: 用户云卷云舒    时间: 2025-3-20 20:06
标题: 黑马客达天下-接口测试-Postman+Pytest+Allure+Jenkins实现连续集成
目录
项目简介
待测接口
测试流程
计划接口测试用例
合同新增业务
业务路径
剖析接口文档
接口测试用例
接口测试-合同
验证码接口
登录接口
验证码和登录接口关联
新增课程接口
合同上传接口
添加合同接口
合同列表接口
单接口测试
登录接口
提取测试点
计划测试用例
进行测试
断言简化测试
课程添加接口
提取测试点
计划测试用例
查询课程列表接口
提取测试点
计划测试用例
课程修改接口
提取测试点
计划测试用例
课程删除接口
提取测试点
计划测试用例
PostMan
批量实行
断言
相应码断言
包罗指定字符串断言
JSON数据断言
参数化
自定义变量
JSON
CSV
自动化
搭建情况
根本知识
代码实现验证码接口
代码实现登录接口
接口对象封装
代码实现课程新增接口
代码实现合同上传及合同新增接口
代码实现单接口测试-登录接口-JSON实现
自动化集成Allure
集成Jenkins
搭建Newman自动化测试情况
平常陈诉和增强版陈诉
Allure陈诉
通过Jenkins连续集成
自动构建包罗Allure天生陈诉的使命
配置Allure插件
创建使命
Postman使命运行后,postman_Allure使命随之运行


配套资料链接: 百度网盘 请输入提取码
项目简介


项目名称:客达天下项目类型:销售管理系统(CRM)项目特点:前后端分离、功能通用性强项目链接:客达天下/

待测接口


测试流程

计划接口测试用例

合同新增业务

合同新增流程图:

业务路径


剖析接口文档




对新增合同接口文档进行分析,通过哀求中的参数(URL、哀求方法、哀求头、哀求参数类型、哀求参数等),计划测试用例
接口测试用例


接口测试-合同

验证码接口


哀求路径:
  1. http://kdtx-test.itheima.net/api/captchaImage
复制代码
实现步骤:
登录接口


哀求路径:
  1. http://kdtx-test.itheima.net/api/login
复制代码
实现步骤:
验证码和登录接口关联

上文可知,登录接口的哀求体中包罗验证码接口的返回值,使用关联技术可以避免手动赋值
需求:

实现步骤:
   需要先运验证码接口,在运行登录接口
  新增课程接口


哀求路径:
  1. http://kdtx-test.itheima.net/api/clues/course
复制代码
实现步骤:
合同上传接口



哀求路径:
  1. http://kdtx-test.itheima.net/api/common/upload
复制代码
实现步骤:
添加合同接口



哀求路径:
  1. http://kdtx-test.itheima.net/api/contract
复制代码
  1. 请求样例:
  2. {
  3.    "name":"测试接口21",
  4.    "phone":"12222222222",
  5.    "contractNo":"HT100120234",
  6.    "subject":"6",
  7.    "courseId":99,
  8.    "channel":"0",
  9.    "activityId":77,
  10.    "fileName":"{{fileName}}"
  11. }
复制代码
实现步骤:
合同列表接口


哀求路径:
  1. http://kdtx-test.itheima.net/api/contract/list
复制代码
实现步骤:
单接口测试

登录接口


哀求路径:
  1. http://kdtx-test.itheima.net/api/login
复制代码
需求:

提取测试点


计划测试用例


进行测试

断言简化测试

在登录哀求的Tests种添加以下内容:
  1. //断言 状态码为200
  2. pm.test("Status code is 200", function () {
  3.    pm.response.to.have.status(200);
  4. });
  5. //断言数据中包含 "成功"
  6. pm.test("Body matches string", function () {
  7.    pm.expect(pm.response.text()).to.include("成功");
  8. });
  9. //断言json返回数据中的msg值为 "操作成功"
  10. pm.test("Your test name", function () {
  11.    var jsonData = pm.response.json();
  12.    pm.expect(jsonData.msg).to.eql("操作成功");
  13. });
复制代码
发送哀求并检察相应结果:

课程添加接口


哀求路径:
  1. http://kdtx-test.itheima.net/api/clues/course
复制代码
需求:

提取测试点


计划测试用例



查询课程列表接口


哀求路径:
  1. http://kdtx-test.itheima.net/api/clues/course/list
复制代码
需求:

提取测试点


计划测试用例



课程修改接口


哀求路径:
  1. http://kdtx-test.itheima.net/api/clues/course
复制代码
需求:

提取测试点


计划测试用例


课程删除接口


哀求路径:
  1. http://kdtx-test.itheima.net/api/clues/course/id
复制代码
需求:

提取测试点


计划测试用例



PostMan

批量实行

选中需要实行的Collections,点击运行按钮

选择要实行的哀求,点击右侧按钮实行

断言

代替人工自动判断预期结果和实际结果是否同等

相应码断言


包罗指定字符串断言


JSON数据断言


参数化

自定义变量

在Collections界面下的Variables页面卡中可以自定义变量

之后可以使用 {{变量名}} 来使用

JSON

创建json文件,内容如下:
  1. [
  2.     {"username":"manager","password":123456,"status":200,"message":"成功","msg":"操作成功"},
  3.     {"username":"admin","password":"HM_2023_test","status":200,"message":"成功","msg":"操作成功"}
  4. ]
复制代码
使用批量运行的方式,选择创建的json文件


可点击 Preview 按钮进行预览

修改哀求中的Tests (使用data.名称 的情势)

在Body中使用{{变量名}}

批量运行

CSV

创建json文件,内容如下:
  1. username,password,status,message,msg
  2. manager,123456,200,成功,操作成功
  3. admin,HM_2023_test,200,成功,操作成功
复制代码
别的配置同json





自动化

使用工具或代码代替人工对接口进行测试
接口自动化框架计划思路

搭建情况



安装requests
  1. pip install requests
复制代码
查抄安装:
  1. pip3 show requests
复制代码

根本知识

Requests:

Response:

代码实现验证码接口

代码实现登录接口


接口对象封装

安装Pytest
  1. pip install pytest
  2. ==7.4.0
  3. 可能还需要以下配置:
  4. pytest
  5. 的测试用例文件名需要以test_命名开头
  6. pycharm导航栏鼠标移入file点击Settings,选择Settings-Tools-Python Integrated Tools,Tesing 下拉框 选 pytest
  7. 点击OK
复制代码
代码实现课程新增接口

代码实现合同上传及合同新增接口


代码实现单接口测试-登录接口-JSON实现

代码:
  1. from api.login import LoginAPI
  2. import pytest
  3. import json
  4. import config
  5. # # 测试数据
  6. # test_data = [
  7. #     ("admin", "HM_2023_test", 200, '成功', 200),
  8. #     ("", "123456", 200, '错误', 500),
  9. #     ("jack666", "123456", 200, '错误', 500),
  10. # ]
  11. # 读取json文件
  12. def build_data(json_file):
  13.    # 定义空列表
  14.    test_data = []
  15.    # 打开json文件
  16.    with open(json_file, "r",encoding='utf-8') as f:
  17.        # 加载json文件数据
  18.        json_data = json.load(f)
  19.        # 循环遍历测试数据
  20.        for case_data in json_data:
  21.            # 转换数据格式[{},{}] ==> [(),()]
  22.            username = case_data.get("username")
  23.            password = case_data.get("password")
  24.            status = case_data.get("status")
  25.            message = case_data.get("message")
  26.            code = case_data.get("code")
  27.            test_data.append((username, password, status, message, code))
  28.    # 返回处理之后测试数据
  29.    return test_data
  30. # 创建测试类
  31. class TestLoginAPI:
  32.    # 初始化
  33.    uuid = None
  34.    # 前置处理
  35.    def setup(self):
  36.        # 实例化接口类
  37.        self.login_api = LoginAPI()
  38.        # 获取验证码
  39.        response = self.login_api.get_verify_code()
  40.        print(response.json())
  41.        # 提取验证码接口返回的uuid参数值
  42.        TestLoginAPI.uuid = response.json().get("uuid")
  43.        print(TestLoginAPI.uuid)
  44.    # 后置处理
  45.    def teardown(self):
  46.        pass
  47.    # 登录成功
  48.    # @pytest
  49. .mark.parametrize("username, password, status, message, code", build_data(json_file="../data/login.json"))
  50.    @pytest
  51. .mark.parametrize("username, password, status, message, code", build_data(json_file=config.BASE_PATH + "/data/login.json"))
  52.    def test01_success(self, username, password, status, message, code):
  53.        login_data = {
  54.            "username": username,
  55.            "password": password,
  56.            "code": "2",
  57.            "uuid": TestLoginAPI.uuid
  58.        }
  59.        response = self.login_api.login(test_data=login_data)
  60.        # 断言响应状态码为200
  61.        assert status == response.status_code
  62.        # 断言响应数据包含'成功'
  63.        assert message in response.text
  64.        # 断言响应json数据中code值
  65.        assert code == response.json().get("code")
复制代码
运行结果:


自动化集成Allure

下载地址:
  1. GitHub:
  2. https://github.com/allure-framework/allure2/releases
  3. 镜像源:
  4. https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/
复制代码
解压并添加情况变量(bin目录)
检验安装
  1. allure --version
复制代码

配置pytest

.ini文件,添加以下内容:
  1. [pytest
  2. ]
  3. addopts=-s --alluredir report
  4. testpaths=./script
  5. python_files=ContractTest.py
  6. python_classes=Test*
  7. python_functions=test*
复制代码
运行pytest

:(终端中)
  1. pytest
复制代码

然后可以看到report目录下天生了对应日志

天生Allure陈诉:在对应的路径下运行下面命令
  1. allure serve report
复制代码

运行之后会弹出网页,可以看到具体的测试陈诉
   堕落缘故原由:更新及删除的操纵需要指定对应的id,此处并未指定
  





集成Jenkins

   由于postman哀求中使用了断言,而且哀求中包罗接口验证的错误用例,故陈诉中存在的题目均在预期之内
  搭建Newman自动化测试情况

Newman 是一个命令行工具,用于运行 Postman 集合。它答应你在命令行中自动化测试 API,并可以与连续集成和连续摆设(CI/CD)流程集成 相关操纵

首先要安装node.jscmd中实行下面命令 验证是否精确安装:
  1. node -v
复制代码

运行下面命令安装newman:
  1. npm install -g newman
复制代码
之后运行下面命令验证是否精确安装:
  1. newman -v
复制代码

然后导出我们的测试文件

使用cmd进入到测试文件所在目录,运行以下命令
  1. newman run .\Postman.json --reporters cli
复制代码

平常陈诉和增强版陈诉

  1. #导入陈诉模块##平常npm install -g newman
  2. -reporter-html##增强版npm install -g newman
  3. -reporter-htmlextra#运行下面命令 天生陈诉(HTML)newman run Postman.json -r html,htmlextra --reporter-html-export --reporter-html-export html1.html --reporter-htmlextra-export html2.html
复制代码

平常版html

增强版html

会发现:此页面样式错误,缘故原由是引用的js文件在国外解决方法:手动修改对应的js文件
  1. https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css
  2. 修改为
  3. https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.1/css/bootstrap.min.css
复制代码

Allure陈诉

  1. #运行下面命令安装依赖
  2. npm install newman-reporter-allure -g
  3. #运行下面命令生成results
  4. newman run Postman.json --reporters allure --reporter-allure-export allure-results
  5. #运行下面命令查看 报告
  6. allure serve
复制代码

通过Jenkins连续集成

官网:Jenkins/
安装好之后,cmd进入对应文件夹中运行下面命令
  1. java -jar -Dfile.encoding=UTF-8 jenkins.war
复制代码
进入之后,我们点击左侧的新建Item创建使命

输入使命名称、选择 Freestyle project

选中Build perodiaclly 设置以下内容:
  1. #每分钟执行一次
  2. * * * * *
复制代码
Build Steps中选择ExecuteWindowsbatchcommand 来实行我们的cmd命令
  1. call newman run D:\newman\Postman.json --reporters cli
  2. exit 0
复制代码

之后会发现,每分钟都会构建

检察控制台输出可以发现

自动构建包罗Allure天生陈诉的使命

至此,已经实现了定时构建,下面我们实验以下内容:当newman构建时(模仿开发上传新代码等),自动构建包罗Allure天生陈诉的使命
配置Allure插件

网站:Index of /jenkins/plugins/allure-jenkins-plugin/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror/
下载插件之后,进入下面界面安装

选择刚才下载的文件之后,点击摆设

重启Jenkins即可
创建使命

同样的,我们创建新的使命


在构建触发器部分,配置下面的内容

Build Steps部分,我们仍选择windows命令行,输入以下内容
  1. ## call md allure-results 可不加
  2. call newman run D:\newman\Postman.json --reporters cli,allure --reporter-allure-export allure-results
  3. exit 0
复制代码
添加构建后操纵


   留意这两个路径是有要求的,相对于工作目录。
  results目录与上方命令中的目录是同等的,不然会出现陈诉没有数据的情况
  Postman使命运行后,postman_Allure使命随之运行




检察Allure Report陈诉如下


   此处图标为!指测试中有失败样例(与测试用例有关),至此,实现了Jenkins+Allure自动化测试陈诉的连续集成

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4