检查数据接口返回数据合法性

问题背景:  在测试&部署监控过程中,我们常常会遇到外部接口返回数据不靠谱的时候。最常见的场合是从某个http获取如json和xml等结构化的结果,进行解析并处理,在这时候出现以下这几种常见类型的错误:(1)整个结构不完整。直接无法解析json/xml。 (2)编码错误,常见的gbk/utf8错误  (3)超长数据/非法字符。 (4)数据类型不匹配。需要是数字的给了字符串,该是数组的给了字符串等,对json本身来说没问题,程序处理就会错误或者崩溃。(5)字段缺失或者为空,这个情况对json本身来说也是没问题的,处理进程固定要去取这里的字段就会出问题,或者进程本身没问题,但实际展现出问题。例如,json描述一个商品最近30天的售价,提供一个数组里有30个数据来画点,json里这个数组为空,从数据格式上来说没问题,但实际画点时展现即为空。 截图是来自一份合作方的数据,箭头指向的是上证指数曲线的点,如果点数据完全缺失(为空)则画曲线的界面会显示为空。在json结构上则仍然验证为合法。 解决问题的现状:  对上述问题,我们有一...

接口数据一致性校验工具

 背景介绍:      搜狗手机输入法8.6版本近期发布了一个创新性的功能:Quickshare,用户通过输入法工具条的Quickshare按钮,可以进行百科、地名、音乐等等类别数据的搜索,搜索结果会直接以卡片形式在输入法中展示。Quickshare功能后台接入了不同数据源的接口,例如搜索地名时可以查询到相应地名的结果,这是由后端的搜狗地图服务器提供的数据源。  问题介绍:         但是该功能在后期测试验证时,出现了数据不一致的问题。例如:在搜狗地图的客户端程序中搜索"凯德Mall",可以查询到对应的结果;但是在Quickshare中搜索"凯德Mall"无结果。虽然接口都是搜狗地图服务器提供的,但是两个具体接口数据内容不完全一致。为了进行数据覆盖度的评估验证,测试组完成了一套基于python的接口数据覆盖度自动化工具。 工具功能介绍该工具的主要功能是:定时地对线上服务器的接口进行自动化监控...

Android移动网络如何抓取数据

1)下载tcpdump工具tcpdump(dumpthetrafficonanetwork)是Linux中强大的网络数据采集分析工具之一,可以将网络中传送的数据包头完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。Android系统是基于Linux,可以使用tcpdump来抓取数据包。由于普通用户不能正常执行tcpdump,具备root权限的用户才可以直接执行它来获取网络上的信息,所以使用它的前提条件是:手机需要具备root权限。2)将下载好的tcpdump拷贝到手机adbpushD:/tcpdump/data/local(将下载到D盘的tcpdump工具拷贝到/data/local目录下)3)修改文件权限①通过命令修改文件权限adbshellchmod777/data/local(777代表目标文件或目录是任何人都可以读、写、执行)②通过RE文件管理器修改文件权限 4)使用tcpdump抓包/data/local/tcpdump-p-vv-s0-w/sdcard/mycapture.pcap(网...

python学习笔记(四)-数据类型

0.在Python中的数据类型详解http://www.cnblogs.com/scios/p/8026576.html1.为什么布尔类型(bool)的True和False分别用1和0来代替吗?计算机只认识二进制数,所以所有的编程语言最终都会转换成简单的二进制序列给CPU按照一定的规则解析。由于二进制只有两个数:0和1,因此用0和1来表示False和True再适合不过了,因为不用浪费资源在转换的过程上!2.使用int()将小数转换为整数,结果是向上取整还是向下取整呢?小数取整会采用比较暴力的截断方式,即向下取整。(注:5.5向上取整为6,向下取整为5)3.我们人类思维是习惯于“四舍五入”法,你有什么办法使得int()按照“四舍五入”的方式取整吗?int()固然没那么“聪明”,但机器是死的,人是活的!5.4“四舍五入”结果为:5,int(5.4+0.5)==55.6“四舍五入”结果为:6,int(5.6+0.5)==6大家看明白了吗?4.获取一个变量的类型,可以使用ty...

Python数据类型详解

目录1、字符串2、布尔类型3、整数4、浮点数5、数字6、列表7、元组8、字典9、日期1、字符串1.1、如何在Python中使用字符串a、使用单引号(')用单引号括起来表示字符串,例如:str='thisisstring';printstr;b、使用双引号(")双引号中的字符串与单引号中的字符串用法完全相同,例如:str="thisisstring";printstr;c、使用三引号(''')利用三引号,表示多行的字符串,可以在三引号中自由的使用单引号和双引号,例如:str='''thisisstringthisispythodstringthisisstring'''printstr;2、布尔类型bool=False;printbool;bool=True;printbool;3、整数int=20;printint;4、浮点数float=2.3;printfloat;5、数字包括整数、浮点数。5.1、删除数字对象引用,例如:a=1;b=2;c=3;dela;delb,c;#printa;#删除a变量后,再调用a变量会报错5.2、数字类型转换int(x[,base])将x转换为一个整数f...

LR 测试http协议xml格式数据接口

Action(){lr_start_transaction("T1");web_custom_request("xxxxHTTPRequest","URL=http://xxxx","Method=POST","Resource=0","RecContentType=text/xml","Referer=","Mode=HTML","EncType=text/xml;charset=utf-8","Body=<?xmlversion="1.0"encoding="utf-8"?>""<feed>""<token>1999EB84FC68842398B1B4268699DC4D</token>""<version>1.0.1,10,u12618</version>""</feed>",LAST);lr_end_transaction("T1",LR_AUTO);return0;}LR测试XML格式的数据时,如何手写脚本是个问题,遇到该类问题的时候可以参考上面。...

Pyhthon爬虫其之验证码识别

  现在的登录系统几乎都是带验证手段的,至于验证的手段也是五花八门,当然用的最多的还是验证码。不过纯粹验证码识已经是很落后的东西了,现在比较多见的是滑动验证,滑动拼图验证(这个还能往里面加广告)、点击图片特定位置确认(同样能放广告),再或者谷歌的No-CAPTCHA。总之纯粹的验证码效果不好,成本也不如一众新型验证码,迟早是要被全部淘汰的,但现在仍然有很多地方在使用传统的图片验证码。所以提到自动模拟登录,验证码识别肯定也是需要进行研究的。      由于我此前并没有接触过验证码识别的相关知识,所以在开工前在网上查找了大量的资料,个人觉得对我最有帮助的三篇附在文章最后。   在翻阅了大量的博客、文章后我采用的识别方法为pytesser中的image_to_string函数。   起先是打算按照某篇文章的介绍,使用libSVM进行人工网络识别,但在完成了图片处理后,我发现使用pytesser进行识别的成功率已经达到了8成以上,便没有继续研究下去(因为我懒…)   验证码是别的流程大概是这样的:      1...

python 爬虫练习

bs去除特定标签。#urlimporteasyguiasgimporturllib.requestfrombs4importBeautifulSoupimportosimportsysimportreimportconfig.story2asurls#获取urldefset_url():msg="请填写一下信息(其中带*号的项为必填项)"title="爬虫练习"fieldNames=["*小说目录地址","*组装前半段","后半段"]fieldValues=[]fieldValues=g.multenterbox(msg,title,fieldNames)whileTrue:iffieldValues==None:breakerrmsg=""foriinrange(len(fieldNames)):option=fieldNames[i].strip()iffieldValues[i].strip()==""andoption[0]=="*":errmsg+=("【%s】为必填项"%fieldNames[i])iferrmsg=="":breakfieldValues=g.multen...
IT猿 IT猿·2020-03-25

Python 爬虫系列:糗事百科最热段子

1.获取糗事百科urlhttp://www.qiushibaike.com/hot/page/2/  末尾2指第2页2.分析页面,找到段子部分的位置,需要一点CSS和HTML的知识3、编写代码1importurllib.request2frombs4importBeautifulSoup3fromurllib.requestimportURLError4fromurllib.requestimportHTTPError5importtime6#调用publicHeaders文件的方法7from爬虫.publicHeadersimportset_user_agent8910#抓取网页11defdownload(pagenum):12url=r'https://www.qiushibaike.com/hot/page/'1314#分页下载15foriinrange(1,pagenum):16#组装url17new_url=url+str(pagenum)18print(new_url)19#有的时候访问某个网页会一直得不到响应,程序就会卡到那里,我让他1秒后自动超时而抛...

python爬虫系列:做一个简单的动态代理池

自动1、设置动态的useragent1importurllib.requestasure2importurllib.parseasupa3importrandom4frombs4importBeautifulSoup56#动态设置useragent:7defset_user_agent():8agent_list=[9"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1;AcooBrowser;.NETCLR1.1.4322;.NETCLR2.0.50727)",10"Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.0;AcooBrowser;SLCC1;.NETCLR2.0.50727;MediaCenterPC5.0;.NETCLR3.0.04506)",11"Mozilla/4.0(compatible;MSIE7.0;AOL9.5;AOLBuild4337.35;WindowsNT5.1;.NETCLR1.1.4322;.NETCLR2.0.50727)",12"Mozilla/5.0(Window...

2.python数据类型

Python3中有六个标准的数据类型:Number(数字)String(字符串)List(列表)Tuple(元组)Set(集合)Dictionary(字典)Python3的六个标准数据类型中:不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组);可变数据(3个):List(列表)、Dictionary(字典)、Set(集合)。Python3支持 int、float、bool、complex(复数)。在Python3里,只有一种整数类型int,表示为长整型,没有python2中的Long。...

23.mysql数据库连接

什么是PyMySQL?PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,Python2中则使用mysqldb。PyMySQL安装:在使用PyMySQL之前,我们需要确保PyMySQL已安装。如果还未安装,我们可以使用以下命令安装最新版的PyMySQL:命令:pip install pymysql,注: 在cmd里面可以直接执行,记住联网  连接数据库准备:主机地址端口用户密码数据库编码-->存在中文的时候,连接需要添加charset='utf8',否则中文显示乱码查询实例importpymysql#主机地址端口用户密码数据库dbConf={"host":"aespowsp-m.dbsit.sfdc.com.cn","user":"aespowsp","password":"deevmFnsWb","database":"aespowsp",#连接已存在的数据库名称,若数据库不存在则该数据不填写"port":3306,"charset":"utf8"#编码-->存在中文的时候,连接需要添加charse...

Jmeter数据库连接

本节内容:1.下载数据库驱动jar包2.添加数据库驱动jar包3.配置JDBCConnectionConfiguration4.配置JDBCRequest5.JDBCRequest参数化 ...

2.3返回IP地址(requests模块安装,get请求发送,loads 解析json到字典)

本节内容: 1、HTTP协议2、Reauests库通信协议:指两个实体之间为了完成通信,共同约定的一种双方都懂,都遵守的语言HTTP协议:浏览器和Web服务器网站之间为了完成通信,共同遵守的语言,基于TCP/IP传输数据,默认端口号是80端口目前常用的协议是HTTP1.1,在HTTP1.1里有八种请求方法,常用的有GET和POSTHTTP协议中的有请求和响应两种报文,两种报文大致分为报文头和报文体报文头:用于传递一些通用的信息或指定某种行为报文体:请求或响应中传递的数据内容报文头中常见的几个字段Cookies,请求报文中,用于存放Cookies内容Content-Type:表示文档属于什么MIME(MultipurposeInternetMailExtensions多用途互联网邮件扩展类型)类型。Location:表示客户应当到哪里去提取文档Set-Cookie:设置与页面关联的Cookie2、Reauests库Reauests库:发送HTTP请求,需要用的Python第三方库,发送一个GET或者POST请求的方法,首先importrequests模块,然后通过调用reque...
首页上一页...486487488489490...下一页尾页