4 查看新版本中商品详情接口测试脚本操作步骤
在新的电子商务被测软件,商品详情是用读入json文件来实现的。格式如下。
{ "price": "¥238.0元", "url": "/static/image/1.jpg", "page": "88", "name": "正山堂茶业 元正简雅正山小种红茶茶叶礼盒装礼品 武夷山茶叶送礼", "desc":"生产许可证编号: SC11435078200021产品标准号: GB/T13738.2-2008厂名: 福建武夷山国家级自然保护区正山茶业有限公司厂址: 武夷山市星村镇桐木村庙湾厂家联系方式: 4000599567配料表: 正山小种红茶储藏方法: 干燥、防潮、防晒、避光、防异味保质期: 1095食品添加剂: 无产品名称: 元正正山堂 元正 正山小种 简雅礼盒净含量: 250g包装方式: 包装包装种类: 盒装品牌: 元正正山堂系列: 元正 正山小种 简雅礼盒茶种类: 正山小种级别: 特级生长季节: 春季产地: 中国大陆省份: 福建省城市: 武夷山市食品工艺: 小种红茶套餐份量: 1人套餐周期: 1周配送频次: 1周1次特产品类: 正山小种价格段: 200-299元" }
1)右键点击循环控制器,在弹出菜单中选择“添加->取样器->HTTP请求”。按照图10中进行设置。
图10 新版本查看商品详情HTTP请求
- 修改名称:查看商品详情(new)。
- 端口号:8080。
- 请求方式:GET。
- 路径:/sec/48/good.json。
- 自动重定向。
2)右键点击商品详情(new)HTTP请求,在弹出菜单中选择“添加->断言->JSON断言”。按照图11中进行设置。
图11 断言good_name
- 修改名称:断言good_name。
- Assert JSON Path exists:$.name。关于JSON Path的用法可以到网上查看相应的资料。
- 选择Additionally assert value(附加断言值)。
- Expect Value:正山堂茶业 元正简雅正山小种红茶茶叶礼盒装礼品 武夷山茶叶送礼。
我们将在第7.4-1节对JSON断言进行更深入的介绍
3)运行,测试保证配置无误。
对于JSON格式可以使用JSON断言元件来验证。我们在有的时候需要把JSON中的数据提取出来。JOSN提取器和JSON JMSPath提取器做了两个元件可以完成这个功能。JSON提取器可以使用JSON-PATH语法从JSON格式的响应中提取数据。JSON JMESPath Extractor作为5.2版本之后加入的后置处理器,其功能与JSON提取器类似,都是对JSON格式的返回数据进行提取,但使用的语法不同。JSON JMESPath Extractor使用JMESPath查询语言从JSON结果中提取值。我们将在第3-2节、第3-3节对JOSN提取器和JSON JMESPath Extractor进行介绍,在第3-4节中对于二者区别进行更深入的探讨。
4)右键点击商品详情(new)HTTP请求,在弹出菜单中选择“添加->后置处理器->JOSN 提取器”。按照图12中进行设置。
图12获取图片路径
- 名称:获取图片路径
- Apply to:Main sample only。
- Names of created variable:good_url,给获取的字符串存储在这个变量名中。
- JSON Path express:$.name。
- Match No。(0 for Random):1,表示匹配的第一个。
- Default Value:null。
下面我们用JSON JMESPath Extractor来获取商品的单价。
5)右键点击商品详情(new)HTTP请求,在弹出菜单中选择“添加->后置处理器->JSON
JMESPath Extractor”。按照图13中进行设置。
图13 获取商品的单价
- 名称:获取商品的单价。
- Apply to:Main sample only。
- Names of created variable:good_price,给获取的字符串存储在这个变量名中。
- JMESPath express:$.price。
- Match No。(0 for Random):1,表示匹配的第一个。
- Default Value:null。
最后我们用BeanShell写个断言,验证获取的名称和单价是不是我们所希望的。
6)在商品详情(new)HTTP请求下建立BeanShell断言,界面如图14所示。
图14 断言good_url和good_price
建立的脚本如下。
//获取系统变量 String good_url = vars.get("good_url"); String good_price = vars.get("good_price"); //判断返回值是否和预期一致 Failure = false; if (! good_url.equals("/static/image/1.jpg")){ Failure = true; FailureMessage = "good_name信息与预期不符合"; }if(! good_price.equals("¥238.0元")){ Failure = true; FailureMessage = "good_price信息与预期不符合"; }
7)运行,保证结果是否正确。
可以看出先利用“获取商品名”和“获取商品的单价”获取变量,再通过BeanShell建立断言,完全可以用JSON断言来取代,本节这么安排,主要是帮助读者了解一下JOSN 提取器和JSON JMSPath提取器这两个元件的使用方法。