购物商城接口自动化测试

测试项目简介

待测系统:http://hmshop-test.itheima.net/ (黑马培训的测试系统,供学习使用)

登录账号密码:13800000001/123456,验证码固定为8888

测试环境:pytest + requests + allure

  • 用例设计   
  1. 用户登录(使用正确用户名密码)
  2. 往购物车添加商品
  3. 查询购物车
  4. 修改购物车商品数量
  5. 删除购物车商品
  6. 提交订单
  7. 查询订单
  8. 取消订单
  • 使用fiddler获取接口信息
  1.  用户登录(使用正确用户名密码):

        因为在登录前,需要更新验证码,以获取Cookies,在登录时提交给服务器验证,否则会提示:“验证码错误”。所以用户登录用例中,需要使用requests请求两次,分别是:更新验证码和登录。

     更新验证码:

  1. 打开登录首页:http://hmshop-test.itheima.net/Home/user/login.html
  2. 打开fiddler(最好设置下过滤器,只抓购物商城的包)
  3. 点击验证码后抓包如下:

提取url: http://hmshop-test.itheima.net/index.php?m=Home&c=User&a=verify (参数r去掉后于结果无影响)

提取请求方式:GET

提取响应信息:从上图中得知,返回的是一张图片,即验证码图片,于结果无用,只需提取响应信息中的Cookie信息即可。

     用户登录:

  1. 登录首页中输入用户名密码:13800000001/123456,验证码8888,点击登录
  2.      2. fiddler抓包如下:
  3. 提取url:http://hmshop-test.itheima.net/index.php?m=Home&c=User&a=do_login

    提取请求方式:POST

    提取请求参数类型:Content-Type: application/x-www-form-urlencoded;

    提取请求参数:username=13800000001&password=123456&verify_code=8888

    提取响应信息:类型为json格式,内容较长,只需要知道 status字段值即可,用于后续代码判断是否请求操作是否成功。

  4. 2. 往购物车添加商品
    •       a) 登录后浏览商品,选择一款商品点击“加入购物车”
      •       b) fiddler抓包查看
      • 提取url:http://hmshop-test.itheima.net/index.php?m=Home&c=Cart&a=add

        提取请求方式:POST

        提取请求参数类型:Content-Type: application/x-www-form-urlencoded;

        提取请求参数:参数内容过长,这里不便展示,可自行抓包参考。

        提取响应信息:类型为json格式,status值为1.

    • 3. 修改购物车商品数量

             a) 进入购物车展示页面

             b) 选择一款商品,点击数量中的+号或者直接输入数字

             c) fiddler抓包查看

    • 提取url: http://hmshop-test.itheima.net/Home/Cart/changeNum.html

      提取请求方式:POST

      提取请求参数类型:Content-Type: application/x-www-form-urlencoded;

      提取请求参数:cart%5Bid%5D=154795&cart%5Bgoods_num%5D=5&cart%5Bselected%5D=1

      提取响应信息:类型为json格式,status值为1

  5. 4.  查询购物车

           a)刷新购物车首页

           b) fiddler抓包查看

提取url: http://hmshop-test.itheima.net/Home/Cart/index.html

提取请求方式:GET

提取响应信息:返回的是一个html页面,注意要提取页面中data-cart-id的内容,用于删除购物车商品时作为参数传递给服务器。

5.  删除购物车商品

       a)在购物车首页商品列表的操作一栏中,点击删除

       b) fiddler抓包查看

提取url:http://hmshop-test.itheima.net/Home/Cart/delete.html

提取请求方式:POST

提取请求参数类型:Content-Type: application/x-www-form-urlencoded;

提取请求参数:cart_ids%5B%5D=154795

提取响应信息:类型为json格式,status值为1

6.  提交订单

       a)添加商品到购物车后,点击“去结算”

       b) 进入订单详情页面后,点击“提交订单”

       b) fiddler抓包查看

提取url:http://hmshop-test.itheima.net/Home/Cart/cart3.html

提取请求方式:POST

提取请求参数类型:Content-Type: application/x-www-form-urlencoded;

提取请求参数内容:内容过长,不便展示。

提取响应信息:类型为json格式,status值为1,result为订单号,需要提取,以供查询订单时作为参数传递

7.   查询订单

       a)提交订单后,页面自动跳转到订单待支付页面

       b) fiddler抓包查看

提取url:http://hmshop-test.itheima.net/index.php?m=Home&c=Cart&a=cart4&order_sn=订单号

提取请求类型:GET

提取请求参数:订单号,从提交订单的接口响应信息中获取

提取响应信息:类型是html页面,需要提取订单详情中的数字,如上图中的2300。

8.  取消订单

       a)在订单待支付页面中点击“订单详情”(或在我的订单中点击对应订单的“订单详情”)

       b) 点击“取消订单”

       c) fiddler抓包查看

提取url:http://hmshop-test.itheima.net/index.php/Home/Order/cancel_order.html

提取请求方式:POST

提取请求参数类型:Content-Type: application/x-www-form-urlencoded;

提取请求参数:id=2300

提取响应信息:类型为json格式,status值为1

  • 测试用例编写

        根据fiddler抓包内容,用例编写如下:

  • 代码编写
  1. 代码环境及插件信息

代码语言

Python

平台

PyCharm

http请求工具插件

Requests

测试用例管理插件

Pytest

报告生成插件

Allure-pytest

     2. 测试框架设计

        

        api 层:存放测试程序中共用的方法

        common层:用于存放公共变量,方便程序读取。

        data层:存放测试用例参数化数据,比如用户登录信息,商品信息等

        log层:存放测试程序执行过程中产生的日志信息。

        report层:存放测试程序的报告信息。

        testcase层:接口自动化测试用例脚本。

        tools层:存放测试程序所用到的工具类。

3. 各层代码解释

common层:该层主要用作读取接口自动化测试中所需要的文件路径,以及自动化测试中会存储的变量,比如Cookie,订单号等。代码如下:

 data层:该层存放自动化测试中会使用的各类数据,简介如下:

        user.json 存放用户登录账号密码以及验证码,格式为json

goods.txt 存放商品相关数据,在添加商品到购物车时作为参数传递,原本格式应该是json,因为是直接从fiddler复制下来的,内容太多,手工修改很容易出错, 所以在tools层写了相关的数据读取工具将文本数据转化为json格式的内容。

orderlist.txt 存放提交订单时所需要的数据,作为参数传递,原本格式为json,也是从fiddler复制下来,后续使用工具转化为json格式。

tools层:其下有logUtils模块和readData模块。

readData模块实现功能如下:

        a) read_json: 该函数读取json格式的文件,本测试项目只在读取用户登录账号密码时会用到该函数。

        b) read_txt_file:该函数读取txt文档,本测试项目中添加商品到购物车的文件中会有两条数据,而txt文档换行会有换行符,需要剔除。

        c) str_to_dict:该函数将字符串列表转换为字典列表,并返回字典列表

      d) read_data:该函数将txt文档转换为字典列表,并返回字典列表,会调用read_txt_file和str_to_dict两个函数。

logUtils实现功能如下:

  • 定义了日志格式、日志级别、日志展示内容等
  • 向外提供logger日志对象,其他程序可直接调用
  • 日志文件按天进行切割

report层:该层存放测试运行时生成的各种数据,用于后续生成报告

log层:存放程序运行时产生的日志信息。

api层:封装requests请求方法,并对响应信息做基本判断。

testcase层:该层用于存放接口自动化测试脚本,按照测试用例顺序编写。

  • 测试用例前置和后置函数,用于记录测试开始和结束时间

  • test_login:该函数用于请求用户登录,用户数据通过pytest.mark.parametrize修饰器传入,后续参数化均使用该修饰器。

通过前面的分析,得知响应信息为json数据时,均有status字段,且成功时status字段值均为1,所以将该字段用于判断请求是否成功。

  • 添加商品到购物车

  • 查询购物车
    • 响应信息是html格式,需要从html文档中提取商品所在购物车中的data-cart-id值,并存放在公共变量中。
    • 因添加了两个商品,所以判断中添加购物车商品数量数值是否不小于2。

  • 修改购物车商品数量:只修改第一个商品的数量。

  • 删除购物车中的商品:只删除第一个商品,留下一个商品提交订单

  • 提交订单

  • 查询订单
    • 该接口返回html文档,需要通过正则表达式匹配订单详情号,用于取消订单时作为参数传递给服务器。

  • 取消订单

  • 测试执行
  • pytest.ini配置
    1. 固定文件,需手动创建在项目根目录下
    2. 用于读取整个项目的配置信息
    3. pytest按此配置文件指定方式运行

  • 运行步骤
    1. 进入testcase目录下,打开cmd
    2. 输入pytest --alluredir=../report 执行测试

  • 输入allure serve ../report,生成测试报告

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值