基于oa系统的网站建设那个网站专门做婚纱相册
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:49
当前位置: 首页 > news >正文
基于oa系统的网站建设,那个网站专门做婚纱相册,推广公司网站,施工企业的期间费用包括哪些1. 什么是接口测试 顾名思义#xff0c;接口测试是对系统或组件之间的接口进行测试#xff0c;主要是校验数据的交换#xff0c;传递和控制管理过程#xff0c;以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型#xff0c;测试类型又主…
- 什么是接口测试 顾名思义接口测试是对系统或组件之间的接口进行测试主要是校验数据的交换传递和控制管理过程以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型测试类型又主要分为功能测试性能测试稳定性测试安全性测试等。 在分层测试的“金字塔”模型中接口测试属于第二层服务集成测试范畴。相比UI层主要是WEB或APP自动化测试而言接口自动化测试收益更大且容易实现维护成本低有着更高的投入产出比是每个公司开展自动化测试的首选。 下面我们以一个HTTP接口为例完整的介绍接口自动化测试流程从需求分析到用例设计从脚本编写、测试执行到结果分析并提供完整的用例设计及测试脚本。 2. 基本流程 基本的接口功能自动化测试流程如下 需求分析 - 用例设计 - 脚本开发 - 测试执行 - 结果分析 2.1 示例接口 接口名称豆瓣电影搜索 地址啥的会被屏蔽发不出来放在文末了
- 需求分析 需求分析是参考需求、设计等文档在了解需求的基础上还需清楚内部的实现逻辑并且可以在这一阶段提出需求、设计存在的不合理或遗漏之处。 如豆瓣电影搜索接口我理解的需求即是支持对片名演职人员及标签的搜索并分页返回搜索结果。
- 用例设计 用例设计是在理解接口测试需求的基础上使用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 json url 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): staticmethod def search(params, expectNumNone): url https://api.douban.com/v2/movie/search 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) def test_q(self): # 校验搜索条件 q qs [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(): staticmethod def checkresult(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 False else: # 结果不为空校验第一个结果 subject response[subjects][0] # 先校验搜索条件tag if params.get(tag): for word in params[tag].split(,): genres subject[genres] ok(word in genres, Check {0} failed!.format(word.encode(utf-8))) # 再校验搜索条件q elif 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 directors ok(any(word.lower() in i.lower() for i in total), Check {0} failed!.format(word.encode(utf-8))) staticmethod def checkpageSize(response): # 判断分页结果数目是否正确 count response.get(count) start response.get(start) total response.get(total) diff total - start if diff count: expectPageSize count elif count diff 0: expectPageSize diff else: expectPageSize 0 eq(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 MIMEMultipart def 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_subjet msg[From] mail_user msg[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. 测试报告 最终发送测试报告邮件截图如下 8. 资源分享 最后为方便大家自学软件测试特意给大家准备了一份13G的超实用干货学习资源涉及所有测试知识点。 这些资料对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。希望对大家有所帮助……
相关文章
-
基于MVC网站建设课程设计报告wordpress 好用的主题
基于MVC网站建设课程设计报告wordpress 好用的主题
- 技术栈
- 2026年03月21日
-
基于jsp的社团组织网站建设赣州人才网招聘找工作
基于jsp的社团组织网站建设赣州人才网招聘找工作
- 技术栈
- 2026年03月21日
-
基于jquery做的网站wordpress获取指定分类的描述
基于jquery做的网站wordpress获取指定分类的描述
- 技术栈
- 2026年03月21日
-
基于phpmysql的网站开发网站地址结构
基于phpmysql的网站开发网站地址结构
- 技术栈
- 2026年03月21日
-
基于php的网站建设思路方案网站开发环境有什么
基于php的网站建设思路方案网站开发环境有什么
- 技术栈
- 2026年03月21日
-
基于php的网站开发html编辑器汉化版apk
基于php的网站开发html编辑器汉化版apk
- 技术栈
- 2026年03月21日
