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

网站的首页文案企业咨询是什么工作

网站的首页文案,企业咨询是什么工作,优化核心系列网站,做康复医院网站#x1f345; 视频学习#xff1a;文末有免费的配套视频可观看 #x1f345; 点击文末小卡片 #xff0c;免费获取软件测试全套资料#xff0c;资料在手#xff0c;涨薪更快 最近在这整理知识#xff0c;发现在pytest的知识文档缺少系统性#xff0c;这里整理一下… 视频学习文末有免费的配套视频可观看  点击文末小卡片 免费获取软件测试全套资料资料在手涨薪更快 最近在这整理知识发现在pytest的知识文档缺少系统性这里整理一下方便后续回忆。 在python中大家比较熟悉的两个框架是unittest和pytest Unittest是Python标准库中自带的单元测试框架Unittest有时候也被称为PyUnit就像JUnit是Java语言的标准单元测试框架一样Unittest则是Python语言的标准单元测试框架。 Pytest是Python的另一个第三方单元测试库。它的目的是让单元测试变得更容易并且也能扩展到支持应用层面复杂的功能测试。 两者之间的区别如下 这里试用的pytest框架加上request来实现接口自动化的测试整个框架考虑到使用数据驱动的方式将数据维护在Excel文档中。 1、下载安装allure 下载地址 https://github.com/allure-framework/allure2/releases https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/ 选择需要的版本下载这里我下载的是2.13.2版本 下载好后解压到你需要存放的路目录并配置环境变量 检查是否配置成功执行cmd输入命令 allure出现如下图则表示安装成功 2、下载安装python 下载地址https://www.python.org/ 下载好后安装并配置环境变量具体流程可以网络查找 3、python安装依赖包 cmd命令执行也可以通过项目中的requirements.txt来安装安装步骤后面再说 pip3 install allure-pytest pip3 install pytest pip3 install pytest_html pip3 install request4、下载并安装pycharm工具 查看网络教程 5、在pycharm新建项目及编码 项目目录如图 base存放一些最底层的方法封装协议请求发送等。common存放一些公共方法。config存放配置文件。testData存放测试数据。log存放日志。report存放报告。testCase存放用例。utils存放公共类。readme用于说明文档。requirements.txt用于记录所有依赖包极其版本号便于环境部署可以通过pip命令自动生成和安装 这里采用数据驱动的方式数据通过读取excel文件来执行测试所以这里需要封装读取excel的方法使用xlrd来操作读取 # operationExcel.py import jsonfrom common.contentsManage import filePath import xlrd, xlwt class OperationExcel:# 获取shell表def getSheet(self, index0):book xlrd.open_workbook(filePath())return book.sheet_by_index(index) #根据索引获取到sheet表# 以列表形式读取出所有数据def getExcelData(self, index0):data []sheet self.getSheet(indexindex)title sheet.row_values(0) # (0)获取第一行也就是表头for row in range(1, sheet.nrows): # 从第二行开始获取row_value sheet.row_values(row)data.append(dict(zip(title, row_value))) # 将读取出第一条用例作为一个字典存放近列表return data# 对excel表头进行全局变量定义 class ExcelVarles:case_Id 用例IDcase_module用例模块case_name用例名称case_server用例地址case_url请求地址case_method请求方法case_type请求类型case_data请求参数case_headers请求头case_preposition前置条件case_isRun 是否执行case_code 状态码case_result 期望结果if __name__ __main__:opExcel OperationExcel()# opExcel.getSheet()# print(opExcel.getExcelData())opExcel.writeExcelData(1, 7, ftest{2})excel 文件内容如图 封装用例 # test_api_all.py # 参数化运用所有用例 import json import pytestfrom utils.operationExcel import OperationExcel, ExcelVarles from base.method import ApiRequest from common.log import loggeropExcel OperationExcel() apiRequest ApiRequest()pytest.mark.parametrize(data, opExcel.getExcelData()) # 装饰器进行封装用例 def test_api(data, login_tokenNone):if data[ExcelVarles.case_isRun] N :logger.info(跳过执行用例)return# 请求头作为空处理并添加tokenheaders data[ExcelVarles.case_headers]if len(str(headers).split()) 0:passelif len(str(headers).split()) 0:headers json.loads(headers) # 转换为字典# headers[Authorization] login_token # 获取登录返回的token并添加到读取出来的headers里面headers headers# 对请求参数做为空处理params data[ExcelVarles.case_data]if len(str(params).split()) 0:passelif len(str(params).split()) 0:params paramsurl data[ExcelVarles.case_server] data[ExcelVarles.case_url] ? paramsr apiRequest.all_method( data[ExcelVarles.case_method] ,url, headersheaders)logger.info(f响应结果{r})responseResult json.loads(r)case_result_assert(data[ExcelVarles.case_code], responseResult[code])# 断言封装 def case_result_assert(expectedResult, actualReuls) :断言封装:param expectedResult: 预期结果:param actualReuls: 实际结果:return:assert expectedResult actualReuls # 状态码封装日志文件 # log.py #!/usr/bin/python # -*- coding: utf-8 -*- import logging import time import osfrom common.contentsManage import logDir# BASE_PATH os.path.dirname(os.path.dirname(os.path.realpath(__file__))) # # 定义日志文件路径 # LOG_PATH os.path.join(BASE_PATH, log) # if not os.path.exists(LOG_PATH): # os.mkdir(LOG_PATH)# 方法1 # 封装自己的logging class MyLogger:def __init__(self):self._logName os.path.join(logDir(), {}.log.format(time.strftime(%Y%m%d)))self._logger logging.getLogger(logger)self._logger.setLevel(logging.DEBUG)self._formatter logging.Formatter([%(asctime)s][%(filename)s %(lineno)d][%(levelname)s]:%(message)s)self._streamHandler logging.StreamHandler()self._fileHandler logging.FileHandler(self._logName, modea, encodingutf-8)self._streamHandler.setFormatter(self._formatter)self._fileHandler.setFormatter(self._formatter)self._logger.addHandler(self._streamHandler)self._logger.addHandler(self._fileHandler)# 获取logger日志记录器def get_logger(self):return self._loggerlogger MyLogger().get_logger()封装请求方法 # method.py import json import requests from common.log import logger from utils.commonUtils import isJsonclass ApiRequest(object):# ---- 第一种请求方式封装requests库调用可根据实际情况传参 ----# def send_requests(self, method, url, dataNone, paramsNone, headersNone,# cookiesNone,jsonNone,filesNone,authNone,timeoutNone,# proxiesNone,verifyNone,certNone):# self.res requestes.request(methodmethod, url url, headersheaders,datadata,# paramsparams, cookiescookies,json json,filesfiles,# authauth, timeout timeout, proxiesproxies,verifyverify,# certcert)# return self.res# 第二种封装方法def get(self, url, dataNone, headersNone, payloadNone):if headers is not None:res requests.get(urlurl, datadata,headersheaders)else:res requests.get(urlurl, datadata)return resdef post(self, url, data, headers, payload:dict, filesNone):if headers is not None:res requests.post(urlurl, datadata, headersheaders)else :res requests.post(urlurl, datadata)if str(res) Response [200] :return res.json()else :return res.textdef put(self,url,data,headers, payload:dict, filesNone):if headers is not None :res requests.put(urlurl,datadata,headersheaders)else:res requests.put(urlurl,datadata)return resdef delete(self,url,data,headers, payload:dict):if headers is not None :res requests.delete(urlurl,datadata,headersheaders)else:res requests.delete(urlurl,datadata)return resdef all_method(self, method, url, dataNone, headersNone, payloadNone, filesNone):logger.info(f请求方法是{method}, 请求地址{url})if headers None:headers {}if method.upper()GET:res self.get(url,data,headers, payload)elif method.upper()POST:res self.post(url, data, headers, payload, files)elif method.upper() PUT:res self.put(url, data, headers, payload, files)elif method.upper() DELETE:res self.delete(url, data, headers, payload)else :res f请求{method}方式不支持或者不正确return json.dumps(res, ensure_asciiFalse, indent4, sort_keysTrue, separators(,,:))运行 # run.py import shutil import pytest import osfrom common.log import logger import subprocess # 通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序 from common.contentsManage import htmlDir, resultDirif __name__ __main__:htmlPath htmlDir()resultPath resultDir()if os.path.exists(resultPath) and os.path.isdir(resultPath):logger.info(清理上一次执行的结果)shutil.rmtree(resultPath, True)logger.info(开始测试)pytest.main([-s, -v, --alluredir, resultPath]) #运行输出并在resport/result目录下生成json文件logger.info(结束测试)# 如果是代码单独执行需要立马看到报告可以执行下面语句如果配合Jenkins使用则可以不需要执行Jenkins自带的插件allure会操作# logger.info(生成报告)# subprocess.call(allure generate resultPath -o htmlPath --clean, shellTrue) # 读取json文件并生成html报告,--clean诺目录存在则先清楚# logger.info(查看报告)# subprocess.call(allure open -h 127.0.0.1 -p 9999 htmlPath, shellTrue) #生成一个本地的服务并自动打开html报告依赖包安装可以执行命令 pip3 install -r requirements.txt来安装 # requirements.txt pytest7.4.3 pytest-html4.1.1 pytest-xdist3.5.0 pytest-ordering0.6 pytest-rerunfailures13.0 allure-pytest2.13.2 xlrd1.2.0 requests2.31.0至此项目的代码框架就基本结束了 6、安装并配置Jenkins Jenkins的安装看你需要在Windows还是Linux下安装具体教程可以网络查找 Jenkins安装allure插件 Jenkins安装并登录后可以创建任务 添加构建步骤根据你安装环境的不同选择不同的构建 添加构建后操作选择 allure Report 配置代码执行的结果地址 运行测试后可以在任务中查看allure生成的报告 至此jenkinspythonpytestrequestsallure的接口自动化测试就记录到这里刚兴趣的可以去看看pytest的官方文档了解更多知识。 同时在这我为大家准备了一份软件测试视频教程含面试、接口、自动化、性能测试等就在下方需要的可以直接去观看。 字节大佬一周讲完自动化测试项目实战这套教程是怎么称霸B站的【2024最新版】
http://www.zqtcl.cn/news/186473/

相关文章:

  • 在线制作书封网站建德建设局官方网站
  • 广州建设手机网站wordpress 外部链接跳转
  • 传播公司可以做门户网站吗深圳常平网站建设制作公司
  • 最好的网站设计公司源码 php多平台网站建设
  • 下载了网站源码施工企业质量管理体系应按照我国
  • 有关网站建设国内外现状的文献英文谷歌seo
  • 珠海做网站哪间好佛山网站建设骏域
  • 免费网站建设支持ftp网络规划设计师资格证
  • 网站打开文件按钮怎么做十大网络游戏
  • 问答类咨询网站的建设烟台开发区做网站
  • 网站域名费用怎么做分录销售crm客户管理系统
  • 海南住房与城乡建设网站大连做网站团队
  • 邯郸最穷的三个县长春纯手工seo
  • 昌黎网站建设贵德县建设局网站
  • 山西网站制作公司兼职做网站安全么
  • 阿里做网站怎么做青岛网站维护
  • 怎么建网站手机版郑州网站建设哪家好
  • 做企业网站有哪些好处安龙网站建设
  • 怎做连接网站wordpress iis设置方法
  • ugc网站开发网站设计常见流程
  • dz论坛可以做招聘网站国内空间没备案可以打开网站吗
  • 建设用地规划证查询网站公司起名字大全免费好听
  • 杭州网站建设公司有哪些瑞诺国际的数字营销模式
  • 宣城网站建设 有限公司高州做网站
  • 做外贸最适合的网站系统有可以做国外支付系统的网站吗
  • 建设执业资格注册中心网站办事大厅ui设计素材库
  • 个人网站免费建站4399电脑版网页链接
  • 重庆开县网站建设公司推荐网站建设与维护高职
  • 关于网站开发的技术博客海口网站设计建设
  • xx市院门户网站建设方案做视频特技的网站