• 项目实战(四)


    充值接口测试流程
    1、登录作为前置条件,获取token、member_id、leave_amount
    1:登录接口
    2:账号提前准备
    2、访问充值接口。组装token、member_id、leave_amount
    1:jsonpath提取数据
    * $--根节点
    * .--子节点
    * ..--子孙节点
    jsonpath.jsonpath(data,'$..user')
    3、断言
    1:接口返回数据,利用返回数据进行校验
    2:数据库校验,pymysql用法(但是这个一般测试没有数据库权限)

    充值用例编写
    --使用fixture,前置条件获得登录返回的数据,提供给充值接口使用
    --充值接口依赖于登录这个接口,所以登录就是充值的前置条件---fixture实现前置条件
    --登录接口返回数据能得到的值:需要用到用户自己的id
    用户id、leave_amount、token_type、token
    --在充值接口中,需要在headers中加入token的验证
    Authorization=token_type+" "+token
    --在充值接口中,需要使用的json数据id,在登录接口中获得,替换
    --充值接口返回数据验证
    1:充值接口返回的code、msg
    2:充值成功后需要验证:
    1:充值成功后的返回的leave_amount == 充值的金额 + 登录接口返回数据中的leave_amount
    2:流水记录需要增加1

    --请求数据中member_id处理的方法
    1:直接写死在excel中:麻烦(当换测试账号的时候,需要修改excel多处地方)
    2:因为有测试账号,member_id是固定的,故可以写入到yaml配置文件中,进行获取数据替换
    3:登录接口获取id,excel中json数据中指定特定字符串,读取进行替换
    4:特殊用例:错误的id,直接在登录接口获取的id上加1,然后进行替换。
    所谓错误的id是该id不是用户的id,该id不能与token值匹配,相当于身份不匹配

    --headers中添加Authorization的方法
    1:excel文件中写入特定字符串,读取进行替换
    2:excel中无Authorization元素,在充值接口用例代码中添加
    headers = json.loads(request_data['headers'])
    headers['Authorization'] = token

    jsonpath
    --第三方库,需要安装
    jsonpath:帮助我们快速找到json数据当中的字段,key:value
    jsonpath.jsonpath(data,exp):第一个参数是json格式的字符串,exp为表达式如"$..user"
    exp表达式:
    ----$代表根目录
    ----.代表子元素(只能匹配到子节点)
    ----..代表子孙元素(能匹配到子节点和孙节点)
    ----[0]或者.0 (获取匹配结果的元素,0是索引)
    # exp匹配的结果放到列表中,输出列表类型,如果匹配不到输出False
    # $.data.token---绝对路径匹配

    json的序列化与反序列化---网络层面的转换
    json = '{"user":"13510884901","password":"12345678"}'
    json.loads(json)---将json的格式的通用格式字符串转换为python的字典,为反序列化
    dict = {"user":"13510884901","password":"12345678"},字典里面的元素字符串必须是双引号,不能是用单引号,不然转换会出问题。
    json.dumps(dict)---将python的dict转换为json的通用格式,为序列化

    既然请求数据传送的是通用格式的json,为什么request方法中json=dict,需要传入字典呢?
    ---虽然要求是通用格式,但是python需要提前检测下传入的数据是否符合json的格式,
    故python要求规定传入dict,然后内部处理成json格式数据

    相关序列化与反序列化的资料:
    java:
    Java序列化就是指把Java对象转换为字节序列的过程
    Java反序列化就是指把字节序列恢复为Java对象的过程。
    ---序列化:序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。
    在序列化期间,对象将其当前状态写入到临时或持久性存储区。
    ---反序列:通过从存储区中读取或从文件中读取相关数据,反序列化对象的状态,重新创建该对象。
    ---序列化最重要的作用:在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。
    ---反序列化的最重要的作用:根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。
    总结:核心作用就是对象状态的保存和重建。(整个过程核心点就是字节流中所保存的对象状态及描述信息)

    json/xml的数据传递:
    在数据传输(也可称为网络传输)前,先通过序列化工具类将Java对象序列化为json/xml文件。
    在数据传输(也可称为网络传输)后,再将json/xml文件反序列化为对应语言的对象

    本文来自博客园,作者:%女王%,转载请注明原文链接:https://www.cnblogs.com/lynne-wu/p/14350413.html

  • 相关阅读:
    pandas 读取excle ,迭代
    prettytable模块(格式化打印内容)
    Python开发丨这些面试题会不会难倒你
    python开发最受欢迎的十款工具
    语言组成
    运算符优先级
    Python 位运算符 逻辑运算符 成员运算符
    **算术运算符
    **Python数据类型转换
    字符串-数字-列表(转换)
  • 原文地址:https://www.cnblogs.com/lynne-wu/p/14350413.html
Copyright © 2020-2023  润新知