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

建设机械网站机构辽宁建设工程信息网直接发包工程

建设机械网站机构,辽宁建设工程信息网直接发包工程,什么是门户,建网站需要什么手续目录 1. 什么是接口测试2. 基本流程3. 需求分析4. 用例设计5. 脚本开发6. 结果分析7. 完整脚本8. 参考资料1. 什么是接口测试 顾名思义#xff0c;接口测试是对系统或组件之间的接口进行测试#xff0c;主要是校验数据的交换#xff0c;传递和控制管理过程#xff0c;以及…目录 1. 什么是接口测试2. 基本流程3. 需求分析4. 用例设计5. 脚本开发6. 结果分析7. 完整脚本8. 参考资料1. 什么是接口测试 顾名思义接口测试是对系统或组件之间的接口进行测试主要是校验数据的交换传递和控制管理过程以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型测试类型又主要分为功能测试性能测试稳定性测试安全性测试等。 在分层测试的“金字塔”模型中接口测试属于第二层服务集成测试范畴。相比UI层主要是WEB或APP自动化测试而言接口自动化测试收益更大且容易实现维护成本低有着更高的投入产出比是每个公司开展自动化测试的首选。 下面我们以一个HTTP接口为例完整的介绍接口自动化测试流程从需求分析到用例设计从脚本编写、测试执行到结果分析并提供完整的用例设计及测试脚本。 2. 基本流程 基本的接口功能自动化测试流程如下 需求分析 - 用例设计 - 脚本开发 - 测试执行 - 结果分析 2.1 示例接口 接口名称豆瓣电影搜索 接口文档地址https://developers.douban.com/wiki/?titlemovie_v2#search 接口调用示例 1) 按演职人员搜索https://api.douban.com/v2/movie/search?q张艺谋 2) 按片名搜索https://api.douban.com/v2/movie/search?q大话西游 3) 按类型搜索https://api.douban.com/v2/movie/search?tag喜剧 3. 需求分析 需求分析是参考需求、设计等文档在了解需求的基础上还需清楚内部的实现逻辑并且可以在这一阶段提出需求、设计存在的不合理或遗漏之处。 如豆瓣电影搜索接口我理解的需求即是支持对片名演职人员及标签的搜索并分页返回搜索结果。 4. 用例设计 用例设计是在理解接口测试需求的基础上使用MindManager或XMind等思维导图软件编写测试用例设计主要内容包括参数校验功能校验、业务场景校验、安全性及性能校验等常用的用例设计方法有等价类划分法边界值分析法场景分析法因果图正交表等。 针对豆瓣电影搜索接口功能测试部分我们主要从参数校验功能校验业务场景校验三方面设计测试用例如下 5. 脚本开发 依据上面编写的测试用例设计我们使用pythonnosetests框架编写了相关自动化测试脚本。可以完整实现接口自动化测试、自动执行及邮件发送测试报告功能。 5.1 相关lib安装 必要的lib库如下使用pip命令安装即可 pip install nose pip install nose-html-reporting pip install requests 5.2 接口调用 使用requests库我们可以很方便的编写上述接口调用方法如搜索q刘德华示例代码如下 #codingutf-8 import requests import jsonurl https://api.douban.com/v2/movie/search paramsdict(qu刘德华) r requests.get(url, paramsparams) print Search Params:\n, json.dumps(params, ensure_asciiFalse) print Search Response:\n, json.dumps(r.json(), ensure_asciiFalse, indent4) 在实际编写自动化测试脚本时我们需要进行一些封装。如下代码中我们对豆瓣电影搜索接口进行了封装test_q方法只需使用nosetests提供的yield方法即可很方便的循环执行列表qs中每一个测试集 class test_doubanSearch(object):staticmethoddef search(params, expectNumNone):url https://api.douban.com/v2/movie/searchr requests.get(url, paramsparams)print Search Params:\n, json.dumps(params, ensure_asciiFalse)print Search Response:\n, json.dumps(r.json(), ensure_asciiFalse, indent4)def test_q(self):# 校验搜索条件 qqs [u白夜追凶, u大话西游, u周星驰, u张艺谋, u周星驰,吴孟达, u张艺谋,巩俐, u周星驰,大话西游, u白夜追凶,潘粤明]for q in qs:params dict(qq)f partial(test_doubanSearch.search, params)f.description json.dumps(params, ensure_asciiFalse).encode(utf-8)yield (f,) 我们按照测试用例设计依次编写每个功能的自动化测试脚本即可。 5.3 结果校验 在手工测试接口的时候我们需要通过接口返回的结果判断本次测试是否通过自动化测试也是如此。 对于本次的接口我们搜索“q刘德华”我们需要判断返回的结果中是否含有“演职人员刘德华或片名刘德华”搜索“tag喜剧”时需要判断返回的结果中电影类型是否为“喜剧”结果分页时需要校验返回的结果数是否正确等。完整结果校验代码如下 class check_response():staticmethoddef check_result(response, params, expectNumNone):# 由于搜索结果存在模糊匹配的情况这里简单处理只校验第一个返回结果的正确性if expectNum is not None:# 期望结果数目不为None时只判断返回结果数目eq_(expectNum, len(response[subjects]), {0}!{1}.format(expectNum, len(response[subjects])))else:if not response[subjects]:# 结果为空直接返回失败assert Falseelse:# 结果不为空校验第一个结果subject response[subjects][0]# 先校验搜索条件tagif params.get(tag):for word in params[tag].split(,):genres subject[genres]ok_(word in genres, Check {0} failed!.format(word.encode(utf-8)))# 再校验搜索条件qelif params.get(q):# 依次判断片名导演或演员中是否含有搜索词任意一个含有则返回成功for word in params[q].split(,):title [subject[title]]casts [i[name] for i in subject[casts]]directors [i[name] for i in subject[directors]]total title casts directorsok_(any(word.lower() in i.lower() for i in total),Check {0} failed!.format(word.encode(utf-8)))staticmethoddef check_pageSize(response):# 判断分页结果数目是否正确count response.get(count)start response.get(start)total response.get(total)diff total - startif diff count:expectPageSize countelif count diff 0:expectPageSize diffelse:expectPageSize 0eq_(expectPageSize, len(response[subjects]), {0}!{1}.format(expectPageSize, len(response[subjects]))) 5.4 执行测试 对于上述测试脚本我们使用nosetests命令可以方便的运行自动化测试并可使用nose-html-reporting插件生成html格式测试报告。 运行命令如下 nosetests -v test_doubanSearch.py:test_doubanSearch --with-html --html-reportTestReport.html 5.5 发送邮件报告 测试完成之后我们可以使用smtplib模块提供的方法发送html格式测试报告。基本流程是读取测试报告 - 添加邮件内容及附件 - 连接邮件服务器 - 发送邮件 - 退出示例代码如下 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipartdef send_mail():# 读取测试报告内容with open(report_file, r) as f:content f.read().decode(utf-8)msg MIMEMultipart(mixed)# 添加邮件内容msg_html MIMEText(content, html, utf-8)msg.attach(msg_html)# 添加附件msg_attachment MIMEText(content, html, utf-8)msg_attachment[Content-Disposition] attachment; filename{0}.format(report_file)msg.attach(msg_attachment)msg[Subject] mail_subjetmsg[From] mail_usermsg[To] ;.join(mail_to)try:# 连接邮件服务器s smtplib.SMTP(mail_host, 25)# 登陆s.login(mail_user, mail_pwd)# 发送邮件s.sendmail(mail_user, mail_to, msg.as_string())# 退出s.quit()except Exception as e:print Exceptioin , e 6. 结果分析 打开nosetests运行完成后生成的测试报告可以看出本次测试共执行了51条测试用例50条成功1条失败。 失败的用例可以看到传入的参数是{count: -10, tag: 喜剧}此时返回的结果数与我们的期望结果不一致count为负数时期望结果是接口报错或使用默认值20但实际返回的结果数目是189。赶紧去给豆瓣提bug啦- - 7. 完整脚本 豆瓣电影搜索接口的完整自动化测试脚本我已上传到的GitHub。下载地址test_demo/test_douban at master · lovesoo/test_demo · GitHub 下载完成之后使用如下命令即可进行完整的接口自动化测试并通过邮件发送最终的测试报告 python test_doubanSearch.py最终发送测试报告邮件截图如下 8. 参考资料 1) requests: Requests: 让 HTTP 服务人类 — Requests 2.18.1 文档 2) nosetests: Testing with nose — nose 1.3.7 documentation 3) nose-html-reporting: nose-html-reporting · PyPI
http://www.dnsts.com.cn/news/98890.html

相关文章:

  • 电脑做网站教学iis7.5发布网站教程
  • 深圳餐饮网站建设网站设计师工作室
  • 网站定制怎么收费wordpress员工管理系统
  • 做机网站云南网站设计联系方式
  • 做网站需要撑握哪些技术wordpress入门视频教程
  • 免费字体设计 常见网站响应式网站模板下载
  • 河南网站设计网站建设微信端
  • 5173网站源码厦门外贸网站建设公司
  • 个人备案网站做淘宝客可以用吗怎么做百度网页
  • 建设公司网站开发方案linux如何架设网站
  • 网站怎么做付费项目十堰网站建设报价
  • 网站建设推荐华网天下项目经理查询系统
  • 网站建设优化需要懂那些知识网络系统集成结课论文
  • 南京江宁网站建设在线设计名片
  • 杭州市社区建设网站做一个网站一般费用
  • 销售型企业网站建设应遵守的原则凡科互动官网登录入口官方
  • 有网站前端如何做后台做网站的文案
  • 网站列表页怎么做的wordpress 免插件 cdn
  • 网站主题模板下载安装购物电商型网站怎么做
  • 徐州网站平台漳州正规网站建设公司
  • 学院网站建设管理山东省建设教育集团网站
  • 全国二级建造师查询网站外包加工网是不是骗钱的
  • wordpress更改主站点网站建设与管理考题
  • 云南制作网站的公司建设网站的公司兴田德润怎么联系
  • 阿里云网站建设步骤app软件开发软件
  • 宁夏建设厅网站公示wifi域名是什么
  • 设计师自己的网站网站域名迁移公告
  • 网站导航html源码服务专业的网站开发设计
  • 商务网站开发设计安徽省建筑人员信息网
  • 网站建设总结与心得体会怎样用dw做 网站首页