jsonpath

自动化测试接口PYTHON

佐手、 提交于 2020-12-12 03:14:53
在开发测试中经常会遇到接口迭代和代码重构,一个无关紧要的改动往往会引起整个项目的运行。现有的接口测试中往往只是针对单一接口的测试,可是业务的连贯性是非常紧密的,比如:用户从登陆,获取商品信息,下单,支付回调的处理,以及退款等流程的处理。发现没有好使的接口测试工具(jmeter太难用了)。于是自己使用python 实现自动化接口测试的一套脚本,该脚本可以实现单一接口的测试,和流程的测试;支持多个项目之间的测试;主要的功能如下: 读取Excel 接口参数(1、地址栏参数,2、body参数)动态化,可以从请求返回值中提取数据作为全局参数,供流程下一步骤使用 根据接口发送请求 结果的诊断,使用jsonpath 结果报告邮件 #!/usr/bin/python # -*- coding: UTF-8 -*- import xlrd import requests import json import logging import smtplib from email.mime.text import MIMEText from email.utils import formataddr import jsonpath import sys import traceback #日志定义 logging.basicConfig(level=logging.DEBUG, # log level

第四章练习题

老子叫甜甜 提交于 2020-11-30 23:26:58
1、logging模块有几个日志级别? debug info warning error critical 2、请配置logging模块,使其在屏幕和文件里同时打印以下格式的日志 2017-10-18 15:56:26,613 - access - ERROR - account [1234] too many login attempts 1 import logging 2 3 logger = logging.getLogger( ' access ' ) 4 logger.setLevel(logging.ERROR) 5 6 7 8 ch = logging.StreamHandler() 9 fh = logging.FileHandler( ' homework-logging ' ) 10 11 formatter = logging.Formatter( ' %(asctime)s - %(name)s - %(levelname)s - %(message)s ' ) 12 ch.setFormatter(formatter) 13 fh.setFormatter(formatter) 14 15 logger.addHandler(ch) 16 logger.addHandler(fh) 17 18 19 logger.error( ' account

解析复杂的嵌套数据结构-jsonpath

ⅰ亾dé卋堺 提交于 2020-11-24 03:12:01
JsonPath是一种简单的方法来提取给定JSON文档的部分内容。 JsonPath有许多编程语言,如Javascript,Python和PHP,Java。 JsonPath提供的json解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的json内容。 Json结构清晰,可读性高,复杂度低,非常容易匹配,其结合方式类似Xpath,为了方便记忆 下表中列出了对应了JSONPath以及对应的XPath用法。 XPath JSONPath 描述 / $ 根节点 . @ 现行节点 / .or[] 取子节点 .. n/a 取父节点,Jsonpath未支持 // .. 就是不管位置,选择所有符合条件的条件 * * 匹配所有元素节点 @ n/a 根据属性访问,Json不支持,因为Json是个Key-value递归结构,不需要属性访问。 [] [] 迭代器标示(可以在里边做简单的迭代操作,如数组下标,根据内容选值等) | [,] 支持迭代器中做多选。 [] ?() 支持过滤操作. n/a () 支持表达式计算 () n/a 分组,JsonPath不支持 使用规则 JsonPath表达式可以使用点表示法 $.store.book [0].title 或括号表示法 $['store']['book'][0]['title'] 前面我们提到了jsonpath目前支持多种语言

如何使用SQL Compare或SQL Change Automation

ε祈祈猫儿з 提交于 2020-11-02 18:37:40
SQL Compare 是一款比较和同步SQL Server数据库结构的工具。现有超过150,000的数据库管理员、开发人员和测试人员在使用它。当测试本地数据库,暂存或激活远程服务器的数据库时,SQL Compare将分配数据库的过程自动化。 点击下载SQL Compare试用版 当使用所谓的“基于状态”的数据库部署方法时,您需要设计一些其他的自定义脚本来解决一些棘手的部署问题。例如,如果您使用SQL Compare或SQL Change Automation(SCA)来将包含对象级脚本的脚本文件夹与保存数据的目标数据库同步,则可能需要一些自定义脚本来控制当前和当前数据库之间的数据移动。 在执行之前,SQL Compare和SCA都将这些脚本放置在其生成的同步脚本的开头或结尾。 自定义部署脚本有哪些优点? 通常,当您需要引入代码来处理从一个数据库版本到另一个版本的尴尬更改时,将使用自定义部署脚本。例如,如果要更改已存储有数据的数据库版本中的表,则偶尔需要从SQL Compare中“夺取”来确保旧数据全部移至改进版本中的正确位置。设计。表重命名或表拆分经常会发生这种情况。有时,包含非原子数据的单个列(例如,以逗号分隔的列表,XML或JSON)将需要分配到标准化列中。 您可能还会遇到依赖关系,更改数据库属性,添加计划的任务,添加数据库版本号等问题。在其他时候

Jmeter之接口依赖

谁都会走 提交于 2020-10-28 14:49:19
一、应用场景 1、现在有两个接口,一个是登录,一个查询,但查询接口必须要依赖登录接口的token,那么通过正则表达式提取器提取登录接口的响应结果 2、现在有两个接口,A接口返回列表数据,另一个查询接口的参数是A接口返回的列表的数据 那么为了解决以上两个问题,我们先了解下正则表达式 二、必备的正则表达式: 书写方式为:元字符+限定符 元字符 意义 限定符 意义 . 任意单个字符 + 匹配至少大于1次 \d 任意单个数字 ? 匹配0次或1次 [0-9] 等价0-9 * 匹配0次或多次,贪婪匹配 [a-zA-Z] 等价所有的大小写字母 {n,} {n,m} {n} 匹配限定次数 三、 正则表达式提取器的使用 即在某个请求的响应结果中拿到某个值或某些值 1、操作:在 HTTP请求上 右击->添加->后置处理器->正则表达式提取器(该提取器是隶属于某个请求下的) 2、正则表达式的书写 需求: 想要获取【软件测试工程师】这个内容 接口返回的部分内容如下: 首先找到左右边界,写好正则表达式,根据边界可以唯一确定取到的值。 步骤:(1)先在响应结果中确定要提取内容的左右边界,那么【软件测试工程师】的左边界是"JobName": ",右边界是", (2)再将要提取的内容用英文圆括号括起来,即"JobName": "(软件测试工程师)",,注意: 一定要根据边界可以唯一确定取到的值。 (3)最后将(

api接口返回动态的json格式?我太难了,尝试一下 linq to json

十年热恋 提交于 2020-10-25 21:46:04
一:背景 1. 讲故事 前段时间和一家公司联调api接口的时候,发现一个奇葩的问题,它的api返回的json会动态改变,简化如下: {"Code":101,"Items":[{"OrderTitle":"订单1"}]} {"Code":102,"Items":[{"ProductTitle":"商品1"}]} 逻辑是这样的: Items 中的内容会随的 Code 的改变而改变,里面有可能是订单列表又有可能是商品列表,习惯弱类型的朋友看这种json太正常不过了,但对于强类型的我们来说,简直就是一个大写的奇葩,你这让我用什么强类型反序列化呢???,如果还没理解,请看下面的这张图吧! 经过沟通,对方果然用的是弱类型的php,磨了半天,说服让对方改了返回结构,这样就可以直接用固有类匹配。 二:寻找解决办法 从业务上来说,能说服对方让步那是最好的,但从技术上来说,这种场景有什么好的解决办法呢? 问题的本质就是json是动态的,你反序列化的时候无法指定匹配类。 1. 使用 dynamic 既然是动态的,那C#中也有一个动态类型 dynamic,何不用它来做json中动态变化的那部分的接受值,将 items 定义为 dynamic。如下图: 从图中看: rsp.Items as List<OrderItem> 返回是null,尝试失败,虽然转化失败了,但我相信你也看到了 Newtonsoft