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

产品设计作品网站网络营销的有哪些特点

产品设计作品网站,网络营销的有哪些特点,青岛app开发公司前十名,诚信经营网站的建设闲话休扯#xff0c;上需求#xff1a;自动读取、执行excel里面的接口测试用例#xff0c;测试完成后#xff0c;返回错误结果并发送邮件通知。 分析#xff1a; 1、设计excel表格 2、读取excel表格 3、拼接url#xff0c;发送请求 4、汇总错误结果、发送邮件 开始实现…闲话休扯上需求自动读取、执行excel里面的接口测试用例测试完成后返回错误结果并发送邮件通知。 分析 1、设计excel表格 2、读取excel表格 3、拼接url发送请求 4、汇总错误结果、发送邮件 开始实现 1、设计excel接口用例表格大概长这样   依次为用例编号、接口名称、接口主host、接口路由、请求方式、请求参数类型、请求参数、断言 这次案例中用到的接口其实就是如何优雅的进行接口测试使用的快递查询接口一时半会儿没找到好用的之前写的也找不到了只好作罢。 2、读取excel表格获取每个用例的数据 import xlrd import sysdef test_cases_in_excel(test_case_file):test_case_file os.path.join(os.getcwd(), test_case_file)# 获取测试用例全路径 如E:\Python\httprunner\interface_excel\testcases.xlsxprint(test_case_file)if not os.path.exists(test_case_file):print(测试用例excel文件存在或路径有误)# 找不到指定测试文件就退出程序 os.system(exit)是用来退出cmd的sys.exit()# 读取excel文件test_case xlrd.open_workbook(test_case_file)# 获取第一个sheet下标从0开始table test_case.sheet_by_index(0)# 记录错误用例error_cases []# 一张表格读取下来其实就像个二维数组无非是读取第一行的第几列的值由于下标是从0开始第一行是标题所以从第二行开始读取数据for i in range(1, table.nrows):num str(int(table.cell(i, 0).value)).replace(\n, ).replace(\r, )api_name table.cell(i, 1).value.replace(\n, ).replace(\r, )api_host table.cell(i, 2).value.replace(\n, ).replace(\r, )request_url table.cell(i, 3).value.replace(\n, ).replace(\r, )method table.cell(i, 4).value.replace(\n, ).replace(\r, )request_data_type table.cell(i, 5).value.replace(\n, ).replace(\r, )request_data table.cell(i, 6).value.replace(\n, ).replace(\r, )check_point table.cell(i, 7).value.replace(\n, ).replace(\r, )print(num, api_name, api_host, request_url, method, request_data_type, request_data, check_point)try:# 调用接口请求方法后面会讲到status, resp interface_test(num, api_name, api_host, request_url, method, request_data_type, request_data, check_point)if status ! 200 or check_point not in resp:# append只接收一个参数所以要讲四个参数括在一起当一个参数来传递# 请求失败则向error_cases中增加一条记录error_cases.append((num api_name, str(status), api_host request_url))except Exception as e:print(e)print(第{}个接口请求失败请检查接口是否异常。.format(num))# 访问异常也向error_cases中增加一条记录error_cases.append((num api_name, 请求失败, api_host request_url))return error_cases 3、拼接url判断请求方式get/post发送请求传入读取用例的各种参数先判断请求方式再拼接参数通过requests库来发送请求 import requestsdef interface_test(num, api_name, api_host, request_url, method, request_data_type, request_data, check_point):# 构造请求headersheaders {Content-Type : application/x-www-form-urlencoded; charsetUTF-8,X-Requested-With : XMLHttpRequest,Connection : keep-alive,Referer : http:// api_host,User-Agent : Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36}# 判断请求方式如果是GET则调用get请求POST调post请求都不是则抛出异常if method GET:r requests.get(urlapi_hostrequest_url, paramsjson.loads(request_data), headersheaders)# 获取请求状态码status r.status_code# 获取返回值resp r.textif status 200:# 断言判断设置的断言值是否在返回值里面if check_point in str(r.text):print(第{}条用例{}执行成功状态码为{}结果返回值为{}..format(num, api_name, status, r.text))return status, respelse:print(第{}条用例{}执行失败状态码为{}结果返回值为{}..format(num, api_name, status, r.text))return status, respelse:print(第{}条用例{}执行失败状态码为{}结果返回值为{}..format(num, api_name, status, r.text))return status, respelif method POST:# 跟GET里面差不多就不一一注释了r requests.post(urlapi_hostrequest_url, paramsjson.loads(request_data), headersheaders)status r.status_coderesp r.textif status 200:if check_point in str(r.text):print(第{}条用例{}执行成功状态码为{}结果返回值为{}..format(num, api_name, status, r.text))return status, respelse:print(第{}条用例{}执行失败状态码为{}结果返回值为{}..format(num, api_name, status, r.text))return status, respelse:print(第{}条用例{}执行失败状态码为{}结果返回值为{}..format(num, api_name, status, r.text))return status, respelse:print(第{}条用例{}请求方式有误请确认字段【Method】值是否正确正确值为大写的GET或POST。.format(num, api_name))return 400, 请求方式有误 4、汇总错误结果、发送邮件4.1、汇总错误结果保存为简易html报告并通过邮件发送到指定接收人 def main():# 执行所以测试用例获取错误的用例error_cases test_cases_in_excel(testcases.xlsx)# 如果有错误接口则开始构造html报告if len(error_cases) 0:html htmlbody接口自动化扫描共有 str(len(error_cases)) 个异常接口列表如下 /ptabletrth stylewidth:100px;text-align:left接口/thth stylewidth:50px;text-align:left状态/thth stylewidth:200px;text-align:left接口地址/th/trfor test in error_cases:html html trtd styletext-align:left test[0] /tdtd styletext-align:left test[1] /tdtd styletext-align:left test[2] /td/trsend_email(html)print(html)with open (report.html, w) as f:f.write(html)else:print(本次测试所有用例全部通过)send_email(本次测试所有用例全部通过) 4.2、构造邮件函数 先读取配置文件新建config.yml配置文件内容如下 sender为发送邮件的邮箱receiver为接收者着的邮箱支持多个smtpserver邮箱服务username发送者邮箱少去后缀password密码  import yamldef get_conf():with open (config.yml, r, encodingutf-8) as f:cfg f.read()dic yaml.load(cfg)sender dic[email][sender]receiver dic[email][receiver]smtpserver dic[email][smtpserver]username dic[email][username]password dic[email][password]print(sender, receiver, smtpserver, username, password)return sender, receiver, smtpserver, username, password 然后构造发送邮件的函数 import smtplib import time from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.base import MIMEBase from email.header import Headerdef send_email(text):today time.strftime(%Y.%m.%d,time.localtime(time.time()))sender, receiver, smtpserver, username, password get_conf()# subject为邮件主题 text为邮件正文subject [api_test]接口自动化测试结果通知 {}.format(today)msg MIMEText(text, html, utf-8)msg[Subject] subjectmsg[From] sendermsg[To] .join(receiver)smtp smtplib.SMTP()smtp.connect(smtpserver)smtp.login(username, password)smtp.sendmail(sender, receiver, msg.as_string())smtp.quit() 以上内容就将需求实现了由于现在很晚了懒上面所以函数就对在一个py文件里面了来运行下吧  邮件一会儿就收到了 所有代码如下 #!/usr/bin/env python #-*- coding:utf-8 -*- 需求自动读取、执行excel里面的接口测试用例测试完成后返回错误结果并发送邮件通知。 一步一步捋清需求 1、设计excel表格 2、读取excel表格 3、拼接url发送请求 4、汇总错误结果、发送邮件import xlrd import os import requests import json import yaml import smtplib import time import sys from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.base import MIMEBase from email.header import Headerdef test_cases_in_excel(test_case_file):test_case_file os.path.join(os.getcwd(), test_case_file)# 获取测试用例全路径 如E:\Python\httprunner\interface_excel\testcases.xlsxprint(test_case_file)if not os.path.exists(test_case_file):print(测试用例excel文件存在或路径有误)# 找不到指定测试文件就退出程序 os.system(exit)是用来退出cmd的sys.exit()# 读取excel文件test_case xlrd.open_workbook(test_case_file)# 获取第一个sheet下标从0开始table test_case.sheet_by_index(0)# 记录错误用例error_cases []# 一张表格读取下来其实就像个二维数组无非是读取第一行的第几列的值由于下标是从0开始第一行是标题所以从第二行开始读取数据for i in range(1, table.nrows):num str(int(table.cell(i, 0).value)).replace(\n, ).replace(\r, )api_name table.cell(i, 1).value.replace(\n, ).replace(\r, )api_host table.cell(i, 2).value.replace(\n, ).replace(\r, )request_url table.cell(i, 3).value.replace(\n, ).replace(\r, )method table.cell(i, 4).value.replace(\n, ).replace(\r, )request_data_type table.cell(i, 5).value.replace(\n, ).replace(\r, )request_data table.cell(i, 6).value.replace(\n, ).replace(\r, )check_point table.cell(i, 7).value.replace(\n, ).replace(\r, )print(num, api_name, api_host, request_url, method, request_data_type, request_data, check_point)try:# 调用接口请求方法后面会讲到status, resp interface_test(num, api_name, api_host, request_url, method, request_data_type, request_data, check_point)if status ! 200 or check_point not in resp:# append只接收一个参数所以要讲四个参数括在一起当一个参数来传递# 请求失败则向error_cases中增加一条记录error_cases.append((num api_name, str(status), api_host request_url))except Exception as e:print(e)print(第{}个接口请求失败请检查接口是否异常。.format(num))# 访问异常也向error_cases中增加一条记录error_cases.append((num api_name, 请求失败, api_host request_url))return error_casesdef interface_test(num, api_name, api_host, request_url, method, request_data_type, request_data, check_point):# 构造请求headersheaders {Content-Type : application/x-www-form-urlencoded; charsetUTF-8,X-Requested-With : XMLHttpRequest,Connection : keep-alive,Referer : http:// api_host,User-Agent : Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36}# 判断请求方式如果是GET则调用get请求POST调post请求都不是则抛出异常if method GET:r requests.get(urlapi_hostrequest_url, paramsjson.loads(request_data), headersheaders)# 获取请求状态码status r.status_code# 获取返回值resp r.textif status 200:# 断言判断设置的断言值是否在返回值里面if check_point in str(r.text):print(第{}条用例{}执行成功状态码为{}结果返回值为{}..format(num, api_name, status, r.text))return status, respelse:print(第{}条用例{}执行失败状态码为{}结果返回值为{}..format(num, api_name, status, r.text))return status, respelse:print(第{}条用例{}执行失败状态码为{}结果返回值为{}..format(num, api_name, status, r.text))return status, respelif method POST:# 跟GET里面差不多就不一一注释了r requests.post(urlapi_hostrequest_url, paramsjson.loads(request_data), headersheaders)status r.status_coderesp r.textif status 200:if check_point in str(r.text):print(第{}条用例{}执行成功状态码为{}结果返回值为{}..format(num, api_name, status, r.text))return status, respelse:print(第{}条用例{}执行失败状态码为{}结果返回值为{}..format(num, api_name, status, r.text))return status, respelse:print(第{}条用例{}执行失败状态码为{}结果返回值为{}..format(num, api_name, status, r.text))return status, respelse:print(第{}条用例{}请求方式有误请确认字段【Method】值是否正确正确值为大写的GET或POST。.format(num, api_name))return 400, 请求方式有误def main():# 执行所以测试用例获取错误的用例error_cases test_cases_in_excel(testcases.xlsx)# 如果有错误接口则开始构造html报告if len(error_cases) 0:# html htmlbody接口自动化扫描共有 str(len(error_cases)) 个异常接口列表如下 /ptabletrth stylewidth:100px;text-align:left接口/thth stylewidth:50px;text-align:left状态/thth stylewidth:200px;text-align:left接口地址/thth styletext-align:left接口返回值/th/trhtml htmlbody接口自动化扫描共有 str(len(error_cases)) 个异常接口列表如下 /ptabletrth stylewidth:100px;text-align:left接口/thth stylewidth:50px;text-align:left状态/thth stylewidth:200px;text-align:left接口地址/th/trfor test in error_cases:# html html trtd styletext-align:left test[0] /tdtd styletext-align:left test[1] /tdtd styletext-align:left test[2] /tdtd styletext-align:left test[3] /td/trhtml html trtd styletext-align:left test[0] /tdtd styletext-align:left test[1] /tdtd styletext-align:left test[2] /td/trsend_email(html)print(html)with open (report.html, w) as f:f.write(html)else:print(本次测试所有用例全部通过)send_email(本次测试所有用例全部通过)def get_conf():with open (config.yml, r, encodingutf-8) as f:cfg f.read()dic yaml.load(cfg)# print(type(dic))# print(dic)sender dic[email][sender]receiver dic[email][receiver]smtpserver dic[email][smtpserver]username dic[email][username]password dic[email][password]print(sender, receiver, smtpserver, username, password)return sender, receiver, smtpserver, username, passworddef send_email(text):today time.strftime(%Y.%m.%d,time.localtime(time.time()))sender, receiver, smtpserver, username, password get_conf()# subject为邮件主题 text为邮件正文subject [api_test]接口自动化测试结果通知 {}.format(today)msg MIMEText(text, html, utf-8)msg[Subject] subjectmsg[From] sendermsg[To] .join(receiver)smtp smtplib.SMTP()smtp.connect(smtpserver)smtp.login(username, password)smtp.sendmail(sender, receiver, msg.as_string())smtp.quit()if __name__ __main__:# send_email(test)main() View Code 思考 需要改进的地方有很多 1、增加日志导入logging模块代码里面的print一通copy即可自己尝试哈 2、回写excel表格xlrd既然可以读取excel文档肯定可以写入的。可以新增一列每次执行完用例将结果写进去自己去尝试哈 3、request data type没有做判断这里偷懒了因为只用了一个接口而且大晚上在赶工就没有做判断。可以参照判断请求方式get/post来写。 4、报告渣1、可以尝试使用htmlreport库2、也可以自己尝试使用一些前端框架生成如bootstrap 5、未做持续集成什么是持续集成听起来高大上说白了就是找个数据库或者其他玩意儿将用例、执行结果等等都存储起来。python有很多库可以连接各种数据库mysql、mongoDB读取excel或者其他接口脚本文档存入数据库然后请求接口后再从库里面读取出来。balabala...... 6、无界面没有界面其实要不要都无所谓毕竟只要维护一份excel表格即可。如果一定要的话可以考虑使用django或者flask框架构造web页面将用例的导入导出、新增、编辑、发送请求生成报告等等一系列操作全部移交到前端。这就需要懂一点前端代码如果有兴趣你也可以尝试。 Python接口自动化测试零基础入门到精通2023最新版
http://www.pierceye.com/news/725861/

相关文章:

  • 网站开发公司业务员培训黄聪wordpress
  • 网站规划与建设ppt模板下载响应式网站模板费用
  • 江苏商城网站建设服务网站建设优化石家庄
  • 高师院校语言类课程体系改革与建设 教学成果奖申报网站wordpress 4.8.2 漏洞
  • 以小说名字做网站的小说网wordpress的数据库主机
  • 永嘉高端网站建设价格h5页面制作多少钱
  • 北京网站建设课程培训WordPress分类id在哪
  • 宁夏网站备案青岛专业网站建设公司
  • 廊坊营销网站团队佛山市创意动力信息科技有限公司
  • 怎么学习做网站网络公司 网站建设
  • 网站权重怎么提升网站开发多线程开发
  • wordpress下拉列表沈阳网站排名优化
  • 非自己的网站如何做二次跳转免费建英文网站
  • 广州建筑集团网站企业大型网站开发网站模板设计
  • 漯河网站推广多少钱做调查网站的问卷哪个给的钱高
  • 局域网下怎么访问自己做的网站做网站时如何将前端连接到后台
  • 网页设计与网站建设考试名词解释长治县网站建设
  • 商务网站建设实训报告总结南京太阳宫网站建设
  • 网站建设合同缴纳印花税吗建设企业网站官网登录
  • 石家庄网站开发多少钱做网站和做程序一样吗
  • cpa项目怎么做必须有网站么百度快速收录3元一条
  • 建造网站 备案产品推广文案100字
  • 希腊网站后缀昆山网站推广
  • 企业网站模板seo个人网站制作成品图片
  • 政务网站群建设需求调研表网站优化方案基本流程
  • 那个网站做调查问卷能赚钱架设一个网站
  • 什么网站是免费的合肥网页设计工资一般多少
  • 学校网站建设招聘提高网站浏览量
  • 特色专业网站建设模板北京网站建设公司分享网站改版注意事项
  • 网站上做地图手机上显示不出来的seo长尾快速排名