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

怎么设计网站规划方案seo研究中心倒闭

怎么设计网站规划方案,seo研究中心倒闭,重庆沙盘制作,外贸网站如何选择域名简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Python自带的Unittest框架调用,期望各位可以通过本文对接口自动化测试有一个大致的了解。 引言 为什么要…

简介

本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Python自带的Unittest框架调用,期望各位可以通过本文对接口自动化测试有一个大致的了解。

引言

为什么要做接口自动化测试?

在当前互联网产品迭代频繁的背景下,回归测试的时间越来越少,很难在每个迭代都对所有功能做完整回归。但接口自动化测试因其实现简单、维护成本低,容易提高覆盖率等特点,越来越受重视。

为什么要自己写框架呢?

使用Postman调试通过过直接可以获取接口测试的基本代码,结合使用requets + unittest很容易实现接口自动化测试的封装,而且requests的api已经非常人性化,非常简单,但通过封装以后(特别是针对公司内特定接口),可以进一步提高脚本编写效率。

一个现有的简单接口例子

下面使用requests + unittest测试一个查询接口

接口信息如下

请求信息:

Method:POST

URL:api/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/getjson"querystring = {"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, headers=headers, params=querystring)print(response.text)
优化 第一版

调整代码结构,输出结果Json出来,获取需要验证的response.status_code,以及获取结果校验需要用到的results['total']

#!/usr/bin/env python
#coding: utf-8
'''
unittest 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/getjson"querystring = {"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, headers=headers, params=querystring)#对返回结果进行转义成json串
results = json.loads(response.text)#获取http请求的status_code
print "Http code:",response.status_code#获取结果中的total的值
print results['total']
#print(response.text)
优化 第二版

接口调用异常处理,增加try,except处理,对于返回response.status_code,返回200进行结果比对,不是200数据异常信息。

#!/usr/bin/env python
#coding: utf-8
'''
unittest 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/getjson"querystring = {"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, headers=headers, params=querystring)#对http返回值进行判断,对于200做基本校验if response.status_code == 200:results = json.loads(response.text)if results['total'] == 191:print "Success"else:print "Fail"print 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-8
'''
unittest 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, headers=headers, params=querystring)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, headers=headers, params=querystring)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_level='INFO')#构造测试集合suite=unittest.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.shuangfujiaoyu.com/news/31343.html

相关文章:

  • 网站建设小程序湖南南京网络推广优化哪家好
  • seo技术培训课程搜索引擎优化seo价位
  • 服装电子商务的网站建设深圳网络推广平台
  • wordpress七牛远程图片上传优化措施最新回应
  • 佛山网站设计哪里好如何做网络推广运营
  • 婚礼策划百度seo关键词排名查询工具
  • 湖州外贸网站建设营销和销售的区别在哪里
  • 人妖手术怎么做的视频网站惠州企业网站建设
  • 怎样做网商网站常州seo第一人
  • 阿里巴巴外贸网站登录网站优化方法
  • 邵阳网站开发网站建设网络营销
  • 中央经济工作会议2023年7月召开优化大师app
  • java怎么做网站流量统计网络优化器下载
  • 台州网站建设网站推广在哪里推广比较好
  • 上海宝山网站建设培训班桔子seo
  • 网站开发的出路seo sem
  • 公司网站推广费用网站外包一般多少钱啊
  • 家政服务公司网站建设方案策划书中国十大广告公司排行榜
  • 设计一个官方网站推广广告品牌营销策略分析
  • 罗湖商城网站设计推荐长尾关键词是什么意思
  • 开淘宝的店铺网站怎么做做网站关键词优化的公司
  • 建设网站怎么输入分子式域名注册网站有哪些
  • 南京市政府门户网站建设的调查报告友情链接交换平台
  • 宿迁市建设局投诉网站首页建材企业网站推广方案
  • 做报名表的网站交换链接营销
  • 周口网站设计优化神马网站关键词排名价格
  • 网站需要公司备案么最好用的手机优化软件
  • 网页游戏网站哪个最好seo自学网视频教程
  • 上海十大金融投资公司排名seo推广多少钱
  • php网站开发环境的设置广东东莞最新情况