当前位置: 首页 > news >正文

福建省建设厅网站 保证金做做网站已更新

福建省建设厅网站 保证金,做做网站已更新,建设企业网站管理的重要性,免费发布信息网1 接口测试 接口测试是对系统或组件之间的接口进行测试#xff0c;主要是校验数据的交换#xff0c;传递和控制管理过程#xff0c;以及相互逻辑依赖关系。 接口自动化相对于UI自动化来说#xff0c;属于更底层的测试#xff0c;这样带来的好处就是测试收益更大#xff…1 接口测试 接口测试是对系统或组件之间的接口进行测试主要是校验数据的交换传递和控制管理过程以及相互逻辑依赖关系。 接口自动化相对于UI自动化来说属于更底层的测试这样带来的好处就是测试收益更大且维护成本相对来说较低是我们进行自动化测试的首选 2 框架选型 目前接口自动化的框架比较多比如jmeter就可以集接口自动化和性能测试于一体该工具编写用例效率不高还有我们常用的postman结合newman也可以实现接口自动化PythonunittestrequestsHTMLTestRunner 是目前比较主流的测试框架对python有一定的编码要求 本期我们选择robotframework文中后续统一简称为RF这一个比较老牌的测试框架进行介绍RF是一个完全基于 关键字 测试驱动的框架它即能够基于它的一定规则导入你需要的测试库例如其集成了selenium的测试库即可以理解为操作控件的测试底层库然后基于这些测试库你能应用TXT形式编写自己的关键字支持python和java语言这些关键字即你的库组成之后再编写测试用例由测试关键字组成进行测试他支持移动端、UI自动化和接口自动化的测试 3 环境搭建 python的安装目前选取的python3以上的版本RF的运行依赖pythonrobotframework参考https://www.jianshu.com/p/9dcb4242b8f2jenkins用于调度RF的用例执行环境gitlab代码仓库 4 需求 4.1 需求内容 接口内容实现一个下单并检查订单状态是否正常的场景该需求涉及到如下三个接口 下单接口订单结果查询接口下单必须带上认证标识生成token的接口 环境覆盖需要支持能在多套环境运行比如测试和预发布环境 系统集成需要能够集成在CICD中实现版本更新后的自动检测 4.2 用例设计 4.2.1 用例设计根据业务场景设计测试用例方便后续实现 4.2.2 测试数据构造预置不同环境的测试数据供实现调用 5 整体实现架构 接口测试实现层在RF通过引用默认关键字 RequestsLibrary (实现http请求)和通过python自定义关键字来完成用例实现的需求 jenkins调度在jenkins上配置一个job设置好RF用例执行的服务器和发送给服务器相关的RF执行的指令并且在jenkins中配置好测试报告模板这样用例便可以通过jenkins完成执行并发送测试结果给项目干系人 生成用例执行的API上图中蓝色部分就是为了将jenkins的job生成一个可访问api接口方便被测项目的CICD集成 集成到被测系统CICD流程将上面步骤中封装的API配置在被测应用的__gitlab-ci.yml__中完成整个接口自动化的闭环 6 RF用例实现 6.1 引用的内置关键字 RequestsLibrary 构造http的请求get|post等请求 getRequests # get请求的入参[Arguments] ${url_domain} ${getbody} ${geturl} ${getToken}Create session postmain ${url_domain} # 定义header的内容${head} createdictionary content-typeapplication/json Authorization${getToken} MerchantId${s_merchant_id} # get请求${addr} getRequest postmain ${geturl} params${getbody} headers${head} # 请求状态码断言Should Be Equal As Strings ${addr.status_code} 200${response_get_data} To Json ${addr.content} # 返回http_get请求结果Set Test Variable ${response_get_data} Delete All Sessions6.2 自定义关键字 getEnvDomain 用于从自定义的configs.ini文件获取对应环境的微服务的请求域名 configs.ini的内容 # 获取configs.ini的内容 import configparser def getEnv(path,env):config configparser.ConfigParser()config.read(path)passport config[env][passport]stockconfig[env][stock]financeconfig[env][finance]SUP config[env][SUP]publicApi config[env][publicApi]publicOrder config[env][publicOrder]data_dict{passport:passport,stock:stock,finance:finance,SUP:SUP,publicApi:publicApi,publicOrder:publicOrder}return data_dictexcelTodict 用户将excel中的内容作为字典返回 import xlrd 通用获取excel数据 :param path excel文件路径 :param sheet_name excel文件里面sheet的名称 如Sheet1 :env 环境是IT还是PREdef getExcelDate(path, sheet_name,env):bk xlrd.open_workbook(path)sh bk.sheet_by_name(sheet_name)row_num sh.nrowsdata_list []for i in range(1, row_num):row_data sh.row_values(i)data {}for index, key in enumerate(sh.row_values(0)):data[key] row_data[index]data_list.append(data)data_list1 []for x in data_list:#print(这是str(x))if(x.get(env)env):data_list1.append(x)return data_list1getToken 提供接口下单的授权token *** Keywords *** # 根据传入的clientid、secret生成对应的token getToken[Arguments] ${client_id} ${client_secret} ${url_domain}Create session postmain ${url_domain}${auth} createdictionary grant_typeclient_credentials client_id${client_id} client_secret${client_secret}${header} createdictionary content-typeapplication/x-www-form-urlencoded${addr} postRequest postmain /oauth/token data${auth} headers${header}Should Be Equal As Strings ${addr.status_code} 200${responsedata} To Json ${addr.content}${access} Get From Dictionary ${responsedata} access_token${token} set variable bearer ${access}Set Test Variable ${token}Delete All SessionsgetAllDate 获取该用例下的所有数据 getAllData[Arguments] ${row_no}getEnvDomaingetBalance ${row_no}getStockNum ${row_no}getSupProPrice ${row_no}getProPrice ${row_no}Set Test Variable ${publicOrderUrl}Set Test Variable ${FPbalance}Set Test Variable ${Pbalance}Set Test Variable ${Sbalance}Set Test Variable ${Jbalance}Set Test Variable ${Cardnum}Set Test Variable ${sprice}Set Test Variable ${price}Set Test Variable ${j_merchant_id}Set Test Variable ${s_merchant_id}Set Test Variable ${stock_id}Set Test Variable ${p_product_id}Set Test Variable ${s_product_id} 实现demo *** Settings *** Test Template Resource 引用所有资源.txt*** Test Cases *** *** Settings *** Test Template Resource 引用所有资源.txt*** Test Cases *** 01 下单卡密直储商品[Tags] orderLOG ---------------------获取下单前的数量、余额------------------------------------------getAllData 0${Cardnum1} set variable ${Cardnum}${FPbalance1} set variable ${FPbalance}${Pbalance1} set variable ${Pbalance}${Sbalance1} set variable ${Sbalance}${Jbalance1} set variable ${Jbalance}${CustomerOrderNo1} Evaluate random.randint(1000000, 9999999) random${Time} Get Timelog ------------------------下单操作-------------------------------------------------------getToken 100xxxx 295dab07a9xxxx9780be0eb95xxxx ${casUrl}${input_cs} create dictionary memberId${j_merchant_id} clientId1xxx079 userIdstring shopTypestring customerOrderNo${CustomerOrderNo1}... productId${p_product_id} buyNum1 chargeAccountotest888888 notifyUrlstring chargeIpstring chargePasswordstring... chargeGameNamestring chargeGameRolestring chargeGameRegionstring chargeGameSrvstring chargeTypestring remainingNumber0... contactTelstring contactQQstring customerPrice0 poundage0 batchNumber originalOrderIdstring... shopNamestring appointSupProductId0 stemFromSubOrderId123456 externalBizId456789postRequests ${publicOrderUrl} ${input_cs} /api/Order ${token}${data} get from dictionary ${responsedata} data${orderid} get from dictionary ${data} idsleep 6${getdata} create dictionary Id${orderid} PageIndex1 PageSize1getRequests ${publicOrderUrl} ${getdata} /api/Order/GetList ${token}${datalist} get from dictionary ${response_get_data} data${data} get from dictionary ${datalist} list${dict} set variable ${data}[0]${orderOuterStatus} get from dictionary ${dict} orderOuterStatusLOG ---------------------获取下单后的数量、余额----------------------------------------------getAllData 0${Cardnum2} set variable ${Cardnum}${FPbalance2} set variable ${FPbalance}${Pbalance2} set variable ${Pbalance}${Sbalance2} set variable ${Sbalance}${Jbalance2} set variable ${Jbalance}${sprice} set variable ${sprice}${price} set variable ${price}log ------------------断言-----------------------------------------------------------------${Cardnum3} Evaluate ${Cardnum1}${Jbalance3} Evaluate ${Jbalance1}${Sbalance3} Evaluate ${Sbalance1}${Pbalance3} Evaluate ${Pbalance1}should be true ${orderOuterStatus}90should be true ${Cardnum3}${Cardnum2}should be true ${Jbalance3}${Jbalance2}should be true ${Sbalance3}${Sbalance2}should be true ${Pbalance3}${Pbalance2} 7 集成到CICD流程 7.1 jenkins配置job 通过jenkins的参数化构建定义it和pre两套环境 jenkins发送RF执行的命令 7.2 封装的jenkins_job的执行接口地址 通过python的flask框架根据测试和pre两套环境包一层jenkins的job执行接口 __author__ paul# !/usr/bin/env python # -*- coding: utf-8 -*- from flask import Flask, abort, request, jsonify import jenkinsserver jenkins.Jenkins(http://10.0.1.xxx:80, usernamexxx, passwordfuluxxxx)app Flask(__name__)tasks []# it的测试集合http请求接口 app.route(/test/it, methods[get]) def robot_Test_It():server.build_job(CI_FuluOrder, {environment: IT})return jsonify({result: success})# pre的测试集合http请求接口 app.route(/test/pre, methods[get]) def robot_Test_Pre():server.build_job(CI_FuluOrder, {environment: PRE})return jsonify({result: success})if __name__ __main__:# 将host设置为0.0.0.0则外网用户也可以访问到这个服务app.run(host0.0.0.0, port80, debugTrue) 7.3 将上述flask封装的接口打包成镜像 根据dockerfile生成镜像 FROM python:3.6 WORKDIR /app EXPOSE 80 COPY . . RUN pip install -r requirements.txt  ENTRYPOINT [python,robotTestApi.py] 7.4 将镜像部署到kubernetes对外提供服务 供触发测试执行的调用入口 ,这部分封装的接口部署在本地的k8s集群下ordermiddle IT: http://ordermiddle.xxx.cn/test/it prehttp://ordermiddle.xxx.cn/test/pre 7.5 被测项目的CICD集成接口自动化测试 gitlab目前采取直接对CICD脚本加入测试步骤在部署到容器30秒后考虑到容器在K8S启动时间调用测试接口 7.6 发送测试报告 Python接口自动化测试零基础入门到精通2023最新版
http://www.huolong8.cn/news/127876/

相关文章:

  • 做网站首页应该考虑什么山东天成建设工程有限公司网站
  • 哪里有好的免费的网站建设建设与管理局网站
  • 可登录的网站有哪些下载安装注册app
  • 外贸php网站源码达内网站开发课程
  • 山西做网站推广为什么简洁网站会受到用户欢迎
  • 郑州做网站公司msgg含山县建设局网站下载
  • 房屋网站模板制作网页系统
  • 无锡做网站企业做箱包关注哪个网站
  • 网站版式在国外视频网站做中国美食
  • 高级网站开发培训自己做的视频网站如何赚钱
  • 陕西交通建设集团网站贴吧wordpress文章上下一篇 图片
  • 随州做网站公司网站建设开题报告论述
  • 美橙网站开发wordpress带会员中心模板
  • 长春做网站优化网站如何优化
  • 定制网站成本多少网页设计教程详细步骤ppt
  • 企业发展历程网站wordpress系列教程
  • 网站seo描述wordpress进不去仪表盘
  • 重庆网站设计免费看视频的软件是什么
  • 网站开发转移合同网站模版上线需要什么
  • 响应式网站效果图做多大的青岛网站建设运营
  • 上海做网站哪家便宜芙蓉建设官方网站
  • 长沙网站建设及推广公司智慧团建网站密码忘了
  • 阿里巴巴外贸学院北京网站优化
  • 海口网站建设美丽17模板网站
  • 什么叫商城网站吉林省建设工程安管人员管理系统
  • 下沙网站建设网站开发人才培养目标
  • 免费的开源网站企业网站建设研究目的意义
  • 高效网站建设公司从源码安装wordpress
  • 第二章 营销型网站建设测验成全视频免费观看
  • 做一个专业的网站多少钱做网站seo优化