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

郑州hi宝贝网站建设公司有哪些网站免费做推广

郑州hi宝贝网站建设公司,有哪些网站免费做推广,国内外做的比较好的家装网站,高端制造目录 实现思路 统筹脚本 请求封装 日志封装 结果比对 结果邮件 用例获取及数据格式化 请求url转换 测试用例excel结构 测试报告 邮件接收结果 资料获取方法 实现思路 使用excel管理用例用例信息#xff0c;requests模块发送http请求#xff0c;实现了记录日志requests模块发送http请求实现了记录日志邮件发送测试报告的功能 目录结构如下 下面直接上代码 统筹脚本 请求封装  # coding:utf-8 import json import requestsfrom logging_save import logger from result_check import Result_check from url_transform import urltransformclass Interface:def __init__(self, ):passdef interfaceTest(self, case_list):接口调用主函数# 用于存结果res_flags []# 用于存请求报文request_urls []# 用于存返回报文responses []# 用户存失败的用例failed_case []# 统计成功失败的用例数count_success 0count_failure 0for case in case_list:try:# 模块product case[0]# 用例idcase_id case[1]# 用例标题interface_name case[2].strip(\n)# 用例描述case_detail case[3]# 请求方式method case[4]# 请求urlurl case[5]# 入参param case[6]# 预期结果res_check case[7]except Exception as e:return 测试用例格式不正确%s % e# 定义消息头信息headers {content-type: application/json,User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0}# 对url进行封装new_url urltransform().urltransform(url, method, param)if method.upper() GET:results requests.get(new_url).textlogger.info(u正在调用接口: %s % interface_name)# print resultsresponses.append(results)# 用于存储预期结果与实际结果的比较结果res Result_check().interface_result_check(results, res_check)request_urls.append(new_url)else:request_urls.append(new_url)if param :passelse:data json.loads(param) # 将参数转化为json格式results requests.post(new_url, datajson.dumps(data), headersheaders).textresponses.append(results)res Result_check().interface_result_check(results, res_check)if pass in res:res_flags.append(pass)count_success 1else:logger.warning(u接口返回结果与预期结果不一致失败URL: %s METHOD :%s % (url, method))res_flags.append(fail)count_failure 1failed_case.append((interface_name, method, url))logger.info(u共执行 %s 条用例,PASS: %s,FAILED: %s % (len(case_list), count_success, count_failure))return res_flags, request_urls, responses, count_success, count_failure, failed_case 日志封装 # codingutf-8 import logging import sys import traceback import timeclass LoggingUtils:封装日志工具类的基本操作def __init__(self,logfile)::param logfile:self.logger logging.getLogger(logfile)self.hdlr logging.FileHandler(logfile)formatter logging.Formatter(%(asctime)s %(levelname)s - %(message)s)self.ch logging.StreamHandler()self.ch.setLevel(logging.INFO)self.ch.setFormatter(formatter)self.hdlr.setFormatter(formatter)self.logger.addHandler(self.hdlr)self.logger.addHandler(self.ch)self.logger.setLevel(logging.DEBUG)def debug(self, msg)::param msg::return:self.logger.debug(msg)self.hdlr.flush()def info(self, msg)::param msg::return:self.logger.info(msg)self.hdlr.flush()def warning(self,msg):self.logger.warning(msg)self.hdlr.flush()def error(self, msg)::param msg::return:self.logger.error(msg)# self.logger.removeHandler(logging.StreamHandler())self.logger.removeHandler(self.ch)self.hdlr.flush()def error_sys(self, limitNone)::param limit::return:exceptionType, exceptionValue, exceptionTraceback sys.exc_info()if limit is None:if hasattr(sys, tracebacklimit):limit sys.tracebacklimitn 0eline \nwhile exceptionTraceback is not None and (limit is None or n limit):f exceptionTraceback.tb_framelineno exceptionTraceback.tb_linenoco f.f_codefilename co.co_filenamename co.co_nameeline File %s, line %d, in %s \n % (filename, lineno, name)exceptionTraceback exceptionTraceback.tb_nextn n 1eline \n.join(traceback.format_exception_only(exceptionType, exceptionValue))self.logger.error(eline)self.hdlr.flush() timer time.strftime(%Y-%m-%d,time.localtime()) logger LoggingUtils(%s.log%timer) 结果比对 #coding:utf-8 class result_check():def __init__(self):passdef result_check(self,results,res_check):结果对比函数#返回结果将结果中的json数据转化为可以和预期结果比较的数据res results.replace(:,).replace( : ,)#预期结果是xx11;xx22res_check res_check.split(;)for s in res_check:if s in res:passelse:return 结果不匹配 str(s)return passresult_save.py 保存测试结果的模块复制原有的用例保存为新的excel #coding:utf-8 from xlutils import copy import xlrd import time import osclass Save_test_result():def __init__(self):passdef save_result(self,file_path,res_flags,request_urls,responses)::return:book xlrd.open_workbook(file_path)new_book copy.copy(book)sheet new_book.get_sheet(0)i 1for request_url, response, flag in zip(request_urls, responses, res_flags):sheet.write(i, 8, u%s % request_url)sheet.write(i, 9, u%s % response)sheet.write(i, 10, u%s % flag)i 1report_path os.path.abspath(os.path.join(report))if not os.path.exists(report_path):os.makedirs(report_path)new_book.save(os.path.abspath(os.path.join(report_path, Report%s.xls % time.strftime(%Y.%m.%d%H%M%S)))) 结果邮件 #coding:utf-8 import smtplib from email.mime.text import MIMEText from email.header import Header from email.mime.multipart import MIMEMultipart import os from logging_save import loggerclass Send_report(object):def __init__(self,count_success,count_failure,failed_case)::param count_success::param count_failure::param failed_case:self.count_success count_successself.count_failure count_failureself.failed_case failed_casedef newest_report(self,testreportreport):获取最新的测试报告:param testreport::return:lists os.listdir(testreport)lists.sort(keylambda fn: os.path.getmtime(os.path.join(testreport,fn)))file_new os.path.join(testreport, lists[-1])logger.info(获取最新附件报告成功)return file_newdef send_result(self,username,passwd,from_addr,to_addrs,smtpserver,*args)::param username::param passwd::param from_addr::param to_addrs::param smtpserver::param args::return:sender from_addrsubject 财富港接口测试结果username usernamepasswd passwd邮件内容tille (u用例名称, u请求方式, uurl)details (u成功: str(self.count_success) u失败: str(self.count_failure)) \n u失败的用例如下 : \\n \n.join(str(zip(tille, i)) for i in self.failed_case).decode(unicode-escape)logger.info(邮件附件为: %s %(args[0].split(\\)[1]))if args ! None: #判断是否添加附件msg MIMEMultipart()msg.attach(MIMEText(details, plain, utf-8))i 0while i len(args): #可以添加多个附件part MIMEText(open(args[i], rb).read(), base64, utf-8)part[Content-Type] application/octet-streampart[Content-Disposition] attachment; filename%s%args[i]msg.attach(part) #添加附件i 1msg[subject] Header(subject, utf-8)msg[From] from_addrmsg[To] ,.join(eval(to_addrs)) #兼容多个收件人smtp smtplib.SMTP()try:smtp.connect(smtpserver)smtp.login(username, passwd)smtp.sendmail(sender, eval(to_addrs), msg.as_string())smtp.close()logger.info(带附件测试报告发送成功)except smtplib.SMTPAuthenticationError,e:logger.error(邮箱账户或密码错误: str(e))else:msg MIMEText(details, plain, utf-8)msg[subject] Header(subject, utf-8)msg[From] from_addrmsg[To] ,.join(eval(to_addrs))smtp smtplib.SMTP()try:smtp.connect(smtpserver)smtp.login(username, passwd)smtp.sendmail(sender, eval(to_addrs), msg.as_string())logger.info(测试报告发送成功)smtp.close()except smtplib.SMTPAuthenticationError,e:logger.error(邮箱账户或密码错误 : str(e)) 用例获取及数据格式化 #coding:utf-8 import xlrdfrom logging_save import loggerclass Get_testcase(object):def __init__(self, file_path)::param file_path: 用例文件路径self.file_path file_pathdef readExcel(self):读取用例函数:return: 测试用例列表try:book xlrd.open_workbook(self.file_path) # 打开excelexcept Exception, error:logger.error(路径不在或者excel不正确 : str(error))return errorelse:sheet book.sheet_by_index(0) # 取第一个sheet页rows sheet.nrows # 取这个sheet页的所有行数case_list [] # 用于保存用例信息for i in range(rows):if i ! 0:case_list.append(sheet.row_values(i)) # 把每一条测试用例添加到case_list中return case_list 请求url转换 #coding:utf-8 class urltransform(object):def __init__(self):passdef urltransform(self, url, method, param)::return:if param :new_url urlelse:if method.upper() GET:new_url url ? param.replace(;, ) #如果有参数且为GET方法则组装urlelse:new_url urlreturn new_url 测试用例excel结构 config目录下config.py   获取配置文件信息的模块 #conding:utf-8 import ConfigParserclass Config(object):def __init__(self,file_path):self.config ConfigParser.ConfigParser()self.config.read(file_path)def get_mail_config(self):login_user self.config.get(SMTP, login_user)login_pwd self.config.get(SMTP, login_pwd)from_addr self.config.get(SMTP, from_addr)to_addrs self.config.get(SMTP, to_addrs)smtp_server self.config.get(SMTP, smtp_server)port self.config.get(SMTP, port)return login_user, login_pwd , from_addr, to_addrs,smtp_server, portdef report_save_config(self):pass mail.conf [SMTP] login_user 18******163.com login_pwd ****** from_addr BI18******163.com to_addrs [18******163.com] #to_addrs [1******qq.com,******.com] smtp_server smtp.163.com port 25 测试报告 邮件接收结果 资料获取方法 【留言777】 各位想获取源码等教程资料的朋友请点赞 评论 收藏三连 三连之后我会在评论区挨个私信发给你们~
http://www.huolong8.cn/news/102687/

相关文章:

  • 做网站常用的插件网站建设确认报告
  • 手机做网站空间宝安电子厂做网站
  • 城乡与建设厅网站首页如何做网站的登录注册
  • 公司制作一个网站价格公司品牌策划设计
  • 12380网站开发想做个自己的网站
  • 网站收录突然全部没有了欧派家居全屋定制价格多少钱一平
  • 广州企业网站seo定制开发公司
  • 做公司网站要钱吗济南如何挑选网站建设公司
  • 家具网站开发设计论文wordpress怎么降级
  • 淄博手机网站常熟滨江开发区人才网
  • 建站宝盒建站系统网站优化 前端怎么做
  • 网站设计项目总结网站开发主管岗位职责
  • 邯郸网站建设效果学校网站html模板
  • 取消网站备案时间素材网
  • 开普网站建设公司网站专题模板
  • 企业建网站程序凡科邮箱
  • 上海网站建设哪家公司好淘宝店采用哪些方法做网站推广
  • 龙岗 网站建设深圳信科成都网站建设 外包
  • 职业技能培训网站在什么网站上可以做免费广告
  • 做电影网站怎样赚钱wordpress aspnet_client
  • 网站建设错误代码50019网络建设与网站建设
  • 制作钓鱼网站的费用大连能做网站的公司有
  • 企业网站维护更新做ae动图的网站
  • 如何免费做网站并发布呼市做网站的公司
  • 自己做的网站把密码改忘了怎么办北京网站托管公司
  • 怎么做网站演示网站开发知识培训
  • 做网站插背景图片如何变大做网站的简称
  • 网站备案服务商网站建设和维护教程
  • 腾讯云快速建站做试卷的网站
  • 哪些网站适合推广陕西住房与建设厅网站