测试需求: 第三方系统提供了3个接口,需要测试前端显示的字符串里的对应数据与接口数据是否一致. 测试分层: 开发人员的设计:每周从接口取一次数据,拼接完成后保存到数据库.再从数据库取数提供接口给前端开发,前端展示到页面. 三个层次: 1 常规功能测试方式,验证接口数据与前端数据的一致性[因前端数据嵌入在客户端内无法提取,该步可实现脚本协助手工验证] 2 验证数据源接口与前端接口的一致性[前端接口数据每次最多取100条数据] 3 验证数据源接口与数据库数据的一致性[可实现全量验证] 脚本思路: 一…
一 分别请求3个接口,获取响应. 第三方接口返回有两种:1 纯字符串  2 带bom头的json字串 import requests api1 = 'url1' response1 = requests.get(api1) result1 = response1.content.decode('utf-8-sig') #带BOM头的响应 api2 = 'url2' response2 = requests.get(api2) result2 = response2.content.decode(…
脱敏后脚本 projectapi.py: 项目接口类 # -*- coding:utf-8 -*- """ xx项目接口类 2018-11 dinghanhua """ import requests import re import pymssql #region 工具类函数 def findinfo_from_apiquerystockdetailinfo(str1,str2): """ 从str1中找第一个&q…
五 与开发接口对比 1 分别将三个接口封装成三个函数,传入接口参数,返回提取并处理后的各字段. 拼接字符串作为单独的函数. def api_1(code): 发送请求获取响应 提取响应数据 响应数据转换 将所取字段和值以字典形式保存到result_dict返回 def result_of_3api(code): result1 = api_1(code) #请求三个接口 result2 = api_2(code) result3 = api_3(code) result = 字符串拼接 retu…
七 脚本优化:重复代码的提取成函数:与项目接口相关的都封装到一个类中:添加手工验证脚本,增加输入值的判断逻辑 将所有与该项目接口相关的封装成类 class ProjectApi: #3个数据源接口 def api_1(self,code): pass def api_2(self,code): pass def api_3(self,code): pass #数据源拼接函数 def result_of_3api(self,code): pass #获取开发接口数据 def api_dev(sel…
四 字符串拼接 空值处理 当某字段接口数据为空,则不显示相关字串. 比如字串原本是 "...,净资产收益率:ROE%",当接口数据中ROE为空,不显示',净资产收益率:%' 三目运算符 ROE = ',净资产收益率:{0}%'.format(ROE) if ROE else '' 值的相关性 当某一个值为空时,相关联的另一个也置为空 if val1 == '' or val2 == '': val1 = val2 = '' 字符串拼接 result = '{val1}{val2}{va…
三 数据处理 枚举值的转换.如接口返回1-5,需转成对应的中文. typecap = findinfo_from_api(result, 'TypeCap') dictcap = {': '微盘'} result_dict['TypeCap'] = dictcap[typecap] 去除开头的字符串 公司 公司是 公司是一家 if string.startswith('公司是一家'): result_dict['string'] = string[5:] elif string.startswi…
六 与数据库对比 import pymssql def compare_expected_vs_db(): diff_list = [] # 存储不一致的代码 with pymssql.connect(server=',database='db') as myconnect: with myconnect.cursor(as_dict=True) as cursor: cursor.execute("SELECT top 10 code,content FROM [db].[dbo].[tabl…
上面那个小游戏教程写不下去了,以后再写吧,今天学点新东西,了解的越多,发现python越强大啊! 数据可视化指的是通过可视化表示来探索数据,它与数据挖掘紧密相关,而数据挖掘指的是使用代码来探索数据集的规律和关联.数据集可以是用一行代码就能表示的小型数字列表,也可以是数以吉字节的数据. 用.最流行的工具之一是matplotlib,它是一个数学绘图库,我们将使用它来制作简单的图表,如折线图和散点图.然后,我们将基于随机漫步概念生成一个更有趣的数据集--根据一系列随机决策生成的图表.我们还将使用Pyg…
接着上节继续学习,在本节中,你将下载JSON格式的人口数据,并使用json模块来处理它们.Pygal提供了一个适合初学者使用的地图创建工具,你将使用它来对人口数据进行可视化,以探索全球人口的分布情况. 一 制作世界人口地图 1 下载世界人口数据和提取相关的数据 可以去(http://data.okfn.org/)下载population_data.json,来研究一下population_data.json,看看如何着手处理这个文件中的数据: [   {     "Country Name&qu…
首先确定需要传递的参数和接口,使用接口测试工具验证一下,接口和参数没有问题. 编写python接口脚本 import requests import unittest import json import pymysql conn = pymysql.connect(host='10.10.100.224',port=3840,user='kexin_admin',passwd='kexin@admin!',db='iot') cursor = conn.cursor() sql = "SELE…
格式化数据这东西,主要看需要的运用场景,今天和大家分享的是webapi格式化数据,这里面的例子主要是输出json和xml的格式数据,测试用例很接近实际常用情况:希望大家喜欢,也希望各位多多扫码支持和点赞谢谢: . 自定义一个Action,响应输出集合数据 . api返回json数据的两种方式 . json时间格式处理方式 . 让api接口支持返回json和xml数据 下面一步一个脚印的来分享: . 自定义一个Action,响应输出集合数据 首先,我们新建一个webapi项目,新建好以后我们能够找…
    格式化数据这东西,主要看需要的运用场景,今天和大家分享的是webapi格式化数据,这里面的例子主要是输出json和xml的格式数据,测试用例很接近实际常用情况:希望大家喜欢,也希望各位多多扫码支持和点赞谢谢: . 自定义一个Action,响应输出集合数据 . api返回json数据的两种方式 . json时间格式处理方式 . 让api接口支持返回json和xml数据 下面一步一个脚印的来分享: . 自定义一个Action,响应输出集合数据 首先,我们新建一个webapi项目,新建好以后我…
JSON.stringify() 该方法,将一个JSON对象转化为字符串string JSON.parse() 该方法,将一个字符串转化为JSON对象object 对于JSON对象,获取其对应键值 可有两种方法 通过 “.” 或 “['']” “.”后接对应key “['']”内接对应key…
需要抓取美团历史订单,请联系QQ:858-048-581所需工具: findller chrome 获取外卖历史订单地址为: http://e.waimai.meituan.com/v2/order/history/r/query?getNewVo=1&wmOrderPayType=2&wmOrderStatus=-2&sortField=1&startDate=2017-05-30&endDate=2017-05-30&lastLabel=&nex…
接着上节继续学习,在本节中,我们将使用Python来生成随机漫步数据,再使用matplotlib以引人瞩目的方式将这些数据呈现出来.随机漫步是这样行走得到的路径:每次行走都完全是随机的,没有明确的方向,结果是由一系列随机决策决定的.你可以这样认为,随机漫步就是蚂蚁在晕头转向的情况下,每次都沿随机的方向前行所经过的路径. 一 随机漫步 1 创建RandomWalk()类 为模拟随机漫步,我们将创建一个名为RandomWalk的类,它随机地选择前进方向.这个类需要三个属性,其中一个是存储随机漫步次数…
接着上节继续学习,在本章中,你将从网上下载数据,并对这些数据进行可视化.网上的数据多得难以置信,且大多未经过仔细检查.如果能够对这些数据进行分析,你就能发现别人没有发现的规律和关联.我们将访问并可视化以两种常见格式存储的数据:CSV和JSON.我们将使用Python模块csv来处理以CSV(逗号分隔的值)格式存储的天气数据,找出两个不同地区在一段时间内的最高温度和最低温度.然后,我们将使用matplotlib根据下载的数据创建一个图表,展示两个不同地区的气温变化:阿拉斯加锡特卡和加利福尼亚死亡谷…
接着上节继续学习,在本节中,我们将使用Python来生成随机漫步数据,再使用matplotlib以引人瞩目的方式将这些数据呈现出来.随机漫步是这样行走得到的路径:每次行走都完全是随机的,没有明确的方向,结果是由一系列随机决策决定的.你可以这样认为,随机漫步就是蚂蚁在晕头转向的情况下,每次都沿随机的方向前行所经过的路径. 一 随机漫步 1 创建RandomWalk()类 为模拟随机漫步,我们将创建一个名为RandomWalk的类,它随机地选择前进方向.这个类需要三个属性,其中一个是存储随机漫步次数…
这是一个贝叶斯模型的计算机视觉小项目.希望大家通过这个简单的项目知道一般的计算机视觉项目是怎样操作的. 我先讲题目放在这里希望有兴趣的童鞋花一周的时间思考并用python实现.一周以后我来发布我的详细操作细节和代码. 希望大家能够通过这个简单的项目将自己学到的机器学习以及计算机视觉的知识应用到实践其中. 基于OpenCV编写一个基于朴素贝叶斯的图片分类分类程序 要求: [1] 在google的图片搜索引擎中输入"flower"和"airplane",分别下载m(&g…
在编写接口测试脚本时,要考虑一个问题:参数值从哪里获取 一种方式是可以通过数据库来获取,但是通过这次接口测试,我发现读取数据库有一个缺点:速度慢 可能和我的sql写法有关,有些sql加的约束条件比较少,有时甚至全量查询,把所有结果遍历一遍,这样一轮下来直接就炸了,那速度比蜗牛还慢 这种方式给我的体验不太好,一方面本身连数据库这个操作我就不太愿意用,生怕对数据库造成什么伤害...... 另一种方式就是写死参数,不过除非是一些固定的参数,比如按照某个类型查询,类型是固定的,那么可以事先定义一个列表或…
废话不多说,直接上图: nose.cfg配置文件里,可以指定执行的测试用例.生成测试报告等.以后将详细介绍.…
1.进程和线程 (1)进程是一个执行中的程序.每个进程都拥有自己的地址空间.内存.数据栈以及其他用于跟踪执行的辅助数据.进程也可以派生新的进程来执行其他任务,不过每个新进程都拥有自己的内存和数据栈,所以只能采用进程间通信(IPC)的方式共享信息. (2)线程与进程类似,不过他们是在同一个进程下执行的,并共享相同的上下文.线程一般是以并发方式执行的,但是在单核CPU中真正的并发是不可能的,:每个线程运行一小会儿,然后让步给其他线(再次排队等待更多的CPU时间).但是,多线程访问同一片数据,由于访问…
关键字:Set Variable       Get Json Value       to json        Get From Dictionary     具体关键字用法不再说明,可百度一下: 例:下面是某一个请求页面Response返回的数据,如下: {"id":"1496654252","code":0,"msg":"ok","data":{"tag_list&q…
在使用反射机制时,我们经常需要知道方法的参数和返回值类型,很简单  ,下面上示例,示例中的两个方法非常相似 package deadLockThread; import java.lang.reflect.*; import java.util.*; public class ParmReturnType { public static void main(String[] args) throws NoSuchMethodException, SecurityException { // 获取…
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 关于ResizeMode的使用请参考<PyQt(Python+Qt)学习随笔:QTableWidget表格部件中行高和列宽的计算方式>. 老猿Python,跟老猿学Python! 老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址…
while(list($key,$value) = each($arr)) { while(list($k,$v) = each($value)) { echo $key."==>".$k."===>".$v."<br>"; } } $msg = array( array( 'id'=>'45s', 'name'=>'jacks' ), array( 'id'=>'3s4', 'name'=>'ma…
import re ''' 取值postid,左边界"postid=",右边界"&" ''' url="http://wwww.baidu.com/aspx?postid=6232&actiontip='保存成功'" postid=re.findall(r"postid=(.*?)&",url)[0] print(postid) def findall_data(data,LB=""…
# 列表操作 name_list = ["wang", "niu", "bai", "sui"] # 取值 print("**********取值***************") name = name_list[0] print(name) # 取索引 print("**********取索引***************") name_index = name_list.index…
以项目驱动学习,以实践检验真知 前言 一个后端接口大致分为四个部分组成:接口地址(url).接口请求方式(get.post等).请求数据(request).响应数据(response).如何构建这几个部分每个公司要求都不同,没有什么"一定是最好的"标准,但一个优秀的后端接口和一个糟糕的后端接口对比起来差异还是蛮大的,其中最重要的关键点就是看是否规范! 本文就一步一步演示如何构建起一个优秀的后端接口体系,体系构建好了自然就有了规范,同时再构建新的后端接口也会十分轻松. 在文章末尾贴上了项…
python自带的logging实在是不好用,推荐使用logbook 思路如下: 1.创建path.py文件,获取工程根路径 2.创建log.py文件,在工程根路径下创建日志文件(文件名称按日期命名),并设置log输出等级 3.执行测试用例,调用log文件 具体实现如下: 1.  path.py文件如下:   获取项目的根路径     os.path.abspath(path)       返回path规范化的绝对路径 os.path.dirname(__file__)    获取当前运行脚本的…