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

中国工程建设焊接协会网站为你做的网站

中国工程建设焊接协会网站,为你做的网站,公众号制作模板app,建站新体验简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手#xff0c;一步步调整优化接口调用#xff0c;以及增加基本的结果判断#xff0c;讲解Python自带的Unittest框架调用#xff0c;期望各位可以通过本文对接口自动化测试有一个大致的了解。 引言 为什么要…简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手一步步调整优化接口调用以及增加基本的结果判断讲解Python自带的Unittest框架调用期望各位可以通过本文对接口自动化测试有一个大致的了解。 引言 为什么要做接口自动化测试? 在当前互联网产品迭代频繁的背景下回归测试的时间越来越少很难在每个迭代都对所有功能做完整回归。但接口自动化测试因其实现简单、维护成本低容易提高覆盖率等特点越来越受重视。 为什么要自己写框架呢? 使用Postman调试通过过直接可以获取接口测试的基本代码结合使用requets unittest很容易实现接口自动化测试的封装而且requests的api已经非常人性化非常简单但通过封装以后特别是针对公司内特定接口可以进一步提高脚本编写效率。 一个现有的简单接口例子 下面使用requests unittest测试一个查询接口 接口信息如下 请求信息: MethodPOST URLapi/match/image/getjson Request { category: image, offset: 0, limit: 30, sourceId: 0, metaTitle: , metaId: 0, classify: unclassify, startTime: , endTime: , createStart: , createEnd: , sourceType: , isTracking: true, metaGroup: , companyId: 0, lastDays: 1, author: }Response示例 { timestamp : xxx, errorMsg : , data : { config : xxx }Postman测试方法见 测试思路 1.获取Postman原始脚本 2.使用requests库模拟发送HTTP请求** 3.对原始脚本进行基础改造** 4.使用python标准库里unittest写测试case** 原始脚本实现 未优化 该代码只是简单的一次调用而且返回的结果太多很多返回信息暂时没用示例代码如下 import requestsurl http://cpright.xinhua-news.cn/api/match/image/getjsonquerystring {category:image,offset:0,limit:30,sourceId:0,metaTitle:,metaId:0,classify:unclassify,startTime:,endTime:,createStart:,createEnd:,sourceType:,isTracking:true,metaGroup:,companyId:0,lastDays:1,author:}headers {cache-control: no-cache,postman-token: e97a99b0-424b-b2a5-7602-22cd50223c15}response requests.request(POST, url, headersheaders, paramsquerystring)print(response.text)优化 第一版 调整代码结构输出结果Json出来获取需要验证的response.status_code以及获取结果校验需要用到的results[total] #!/usr/bin/env python #coding: utf-8unittest merchant backgroud interface author: zhang_jin version: 1.0 see:http://www.python-requests.org/en/master/ import unittest import json import traceback import requestsurl http://cpright.xinhua-news.cn/api/match/image/getjsonquerystring {category: image,offset: 0,limit: 30,sourceId: 0,metaTitle: ,metaId: 0,classify: unclassify,startTime: ,endTime: ,createStart: ,createEnd: ,sourceType: ,isTracking: true,metaGroup: ,companyId: 0,lastDays: 1,author: }headers {cache-control: no-cache,postman-token: e97a99b0-424b-b2a5-7602-22cd50223c15}#Post接口调用 response requests.request(POST, url, headersheaders, paramsquerystring)#对返回结果进行转义成json串 results json.loads(response.text)#获取http请求的status_code print Http code:,response.status_code#获取结果中的total的值 print results[total] #print(response.text)优化 第二版 接口调用异常处理增加tryexcept处理对于返回response.status_code返回200进行结果比对不是200数据异常信息。 #!/usr/bin/env python #coding: utf-8unittest merchant backgroud interface author: zhang_jin version: 1.0 see:http://www.python-requests.org/en/master/ import json import traceback import requestsurl http://cpright.xinhua-news.cn/api/match/image/getjsonquerystring {category: image,offset: 0,limit: 30,sourceId: 0,metaTitle: ,metaId: 0,classify: unclassify,startTime: ,endTime: ,createStart: ,createEnd: ,sourceType: ,isTracking: true,metaGroup: ,companyId: 0,lastDays: 1,author: }headers {cache-control: no-cache,postman-token: e97a99b0-424b-b2a5-7602-22cd50223c15}try:#Post接口调用response requests.request(POST, url, headersheaders, paramsquerystring)#对http返回值进行判断对于200做基本校验if response.status_code 200:results json.loads(response.text)if results[total] 191:print Successelse:print Failprint results[total]else:#对于http返回非200的code输出相应的coderaise Exception(http error info:%s %response.status_code) except:traceback.print_exc()优化 第三版 1.该版本改动较大引入config文件单独封装结果校验模块引入unittest模块实现接口自动调用并增加log处理模块2.对不同Post请求结果进行封装不同接口分开调用3.测试用例的结果进行统计并最终输出 #!/usr/bin/env python #coding: utf-8unittest interface author: zhang_jin version: 1.0 see:http://www.python-requests.org/en/master/ import unittest import json import traceback import requests import time import result_statistics import config as cf from com_logger import match_Loggerclass MyTestSuite(unittest.TestCase):docstring for MyTestSuite#classmethoddef sedUp(self):print start...#图片匹配统计def test_image_match_001(self):url cf.URL1querystring {category: image,offset: 0,limit: 30,sourceId: 0,metaTitle: ,metaId: 0,classify: unclassify,startTime: ,endTime: ,createStart: ,createEnd: ,sourceType: ,isTracking: true,metaGroup: ,companyId: 0,lastDays: 1,author: }headers {cache-control: no-cache,postman-token: 545a2e40-b120-2096-960c-54875be347be}response requests.request(POST, url, headersheaders, paramsquerystring)if response.status_code 200:response.encoding response.apparent_encodingresults json.loads(response.text)#预期结果与实际结果校验调用result_statistics模块result_statistics.test_result(results,196)else:print http error info:%s %response.status_code#match_Logger.info(start image_query22222)#self.assertEqual(results[total], 888)try:self.assertEqual(results[total], 888)except:match_Logger.error(traceback.format_exc())#print results[total]#文字匹配数据统计def test_text_match_001(self):text_url cf.URL2querystring {category: text,offset: 0,limit: 30,sourceId: 0,metaTitle: ,metaId: 0,startTime: 2017-04-14,endTime: 2017-04-15,createStart: ,createEnd: ,sourceType: ,isTracking: true,metaGroup: ,companyId: 0,lastDays: 0,author: ,content: }headers {cache-control: no-cache,postman-token: ef3c29d8-1c88-062a-76d9-f2fbebf2536c}response requests.request(POST, text_url, headersheaders, paramsquerystring)if response.status_code 200:response.encoding response.apparent_encodingresults json.loads(response.text)#预期结果与实际结果校验调用result_statistics模块result_statistics.test_result(results,190)else:print http error info:%s %response.status_code#print(response.text)def tearDown(self): passif __name__ __main__:#image_match_Logger ALogger(image_match, log_levelINFO)#构造测试集合suiteunittest.TestSuite()suite.addTest(MyTestSuite(test_image_match_001))suite.addTest(MyTestSuite(test_text_match_001))#执行测试runner unittest.TextTestRunner()runner.run(suite)print success case:,result_statistics.num_successprint fail case:,result_statistics.num_fail#unittest.main()最终输出日志信息 Zj-Mac:unittest lazybone$ python image_test_3.py 测试结果通过.测试结果不通过 错误信息 期望返回值:190 实际返回值:4522. ---------------------------------------------------------------------- Ran 2 tests in 0.889sOK success case: 1 fail case: 1后续改进建议 1.unittest输出报告也可以推荐使用HTMLTestRunner我目前是对结果统计进行了封装 2.接口的继续封装参数化模块化 3.unittest单元测试框架实现参数化调用第三方模块引用nose-parameterized 4.持续集成运行环境、定时任务、触发运行、邮件发送等一系列功能均可以在Jenkins上实现。
http://www.hkea.cn/news/14339225/

相关文章:

  • 虫部落导航网站怎么做做外汇看的国外网站
  • 周口网站开发做网站还是租用服务器
  • 跨平台网站开发做网站排行榜
  • 信誉好的网站开发php和django做网站哪个好
  • 做网站办公室图片做网站需要营业执照嘛
  • 商务网站是什么个人做网站租云服务器
  • 网站做后台电商平台seo
  • 在线做六级阅读网站免费注册二级域名的网站
  • 上海快速建站平台模板建站和定制建站
  • 163邮箱注册申请注册官网杭州seo工作室
  • 网站 参数高端网站定制设计公司
  • 西充县住房和城乡建设局网站想自己做网站
  • 字体排版设计网站重庆建设工程招标信息网
  • 公司网站制作哪个公司好设计之家app
  • 做网站 广州网站建设与管理是什么工作
  • 专业做网站 郑州手机设计图制作软件
  • 临漳seo整站排名团队网站建设哪家便宜
  • 济阳县做网站公司深圳高端电商网站建设者
  • 如何看网站的关键词app开发公司平台
  • 苏州做企业网站的公司logo设计制作公司
  • 新氧网站头图怎么做的网站网页
  • 做网站好还是做淘宝好手机网站建设咨询
  • 网站维护及更新方案做网站公司关键词
  • 做微课的网站有哪些方面怎么快速建网站
  • 国外网站设计欣赏分析五大跨境电商平台对比分析
  • 怎么做网站教程图片长春网络推广seo
  • 中国建设银行电话95533seo网站推广怎么收费
  • linux下网站搭建北京餐饮网络营销公司
  • 定制网站案例深圳做网站佰达科技三十
  • 做网站宿迁软件工程师报考条件