• api课堂笔记_day09&day10


      1 # 正则表达式
      2 improt re
      3 
      4 # re相关的文章&regular表达式学习手册
      5 1、https://www.cnblogs.com/Simple-Small/p/9150947.html
      6 2、https://tool.oschina.net/uploads/apidocs/jquery/regexp.html
      7 3、https://gitee.com/thinkyoung/learn_regex
      8 
      9 # 操作对象-字符串
     10 1、从字符串当中,提取匹配的内容
     11 re 模块
     12 re.findall --返回的是列表 列表里是匹配的所有字符
     13 # 1、匹配1个字符
     14 .除换行符以外的是所有字符 
    
     15 d 只匹配数字0-9
     16 D 匹配非数字
     17 w 匹配包括下划线的任何单词字符,等价于"[A-Z,a-z,0-9]",支持中文
     18 W 匹配任何非单词字符 等价于“[^A-Za-z0-9]”
     19 [a-z] 匹配小写字母
     20 [A-Z] 匹配大写字母
     21 [0-9] 匹配数字
     22 [adcd] 字符集合 匹配所包含的任意一个字符,例如“[abc]” 可以匹配plain的"a"
     23 [a|b] 匹配x或y 例如 "z|food"能匹配"z"或者"food","(z|f)ood"则匹配“zood”或“food”
     24 # 2、数量匹配
     25 * 匹配前一个字符,0次或多次
     26 + 匹配前一个字符,1次或者多次
     27 ?匹配前有个字符,0次或1次
     28 {n} 匹配前一个字符n次
     29 {n,m} 匹配前一个字符少是n次,最多是m次
     30 {n,} 匹配前一个字符至少是n次,没有下限
     31 贪婪模式:
     32 尽可能的匹配更多更长,对于人民币一样,希望越多越好
     33 非贪婪模式:尽可能的匹配更少,在数量表达后面加上 对于无偿的加班时间,越少越好
     34 
     35 # 边界匹配:
     36 ^ 匹配输入字符串的开始位置
     37 $ 匹配输入字符串的结束位置
     38 
     39 # 匹配分组()
     40 
     41 期望结果与实际结果比对:
     42 import ast
     43 import jsonpath
     44 # 从excel当中,读取出来的断言列表
     45 check_str = '[{"expr":"$.code","expected":0,"type":"eq"},{"expr":"$.msg","expected":"OK","type":"eq"}]'
     46 
     47 # 把字符串转换成python列表
     48 check_list = ast.literal_eval(check_str)  # 比eval安全一点。转成列表。
     49 print(check_list)
     50 
     51 # 比对结果列表
     52 check_res = []
     53 
     54 for check in check_list:
     55     # 通过jsonpath表达式,从响应结果当中拿到了实际结果
     56     actual = jsonpath.jsonpath(response, check["expr"])
     57     if isinstance(actual,list):
     58         actual = actual[0]
     59     # 与实际结果做比对
     60     if check["type"] == "eq":
     61         check_res.append(actual == check["expected"])
     62 # eval用法
     63 strr = """
     64 [{"expr":"$.code","expected":0,"type":"eq"},
     65 {"expr":"$.msg","expected":"OK","type":"eq"},
     66 {"expr":"$..leave_amount","expected":2000.55+2000,"type":"eq"}
     67 ]
     68 """
     69 
     70 res = eval(strr)
     71 print(res)
     72 
     73 # 充值接口:
     74 校验 :登录成功(意味要鉴权)
     75 步骤:充值
     76 断言:校验金额是否正确
     77 后置:私放资源/清理数据
     78 1、类级别地的前置 -- 所有的充值用例,只需要登陆一次就够了。
     79    登陆帐号: 
     80        1、用固定的一个帐号 - 配置化(Conf目录下,data.ini里配置用户)
     81        2、已配置的帐号,如何保证它是已经存在的??
     82           用之前,查一下数据库,如果没有,就注册(session前置)。
     83 
     84        
     85 2、接口关联处理 -- 登陆接口的返回值,要提取出来,然后作为充值接口的请求参数
     86 
     87 准备知识 :re正则表达式、 postman是如何处理参数传递(接口关联的)。
     88 """
     89 类对象设置动态属性
     90 setattr(对象/类, attr, value)
     91 getattr(对象/类, attr)
     92 hasattr(对象/类, attr) True表示有attr, False表示没有attr
     93 delattr(对象/类, attr)
     94 
     95 在代码运行的过程中,动态的给Data类设置/获取/删除属性。
     96 """
     97 jsonpath 与 类的动态属性结合
     98 """
     99 从响应结果当中,提取值,并设置为全局变量(Data类作为本框架的全局变量类)
    100 1、提取表达式:放在excel当中
    101    (可能提取1个,可能提取多个。。以表达式个数为准)
    102 
    103 2、提取出来之后,设置为Data类属性
    104 """
    105 # 占位符的替换
    106 ss = '{"member_id":#member_id#,"amount":2000}'
    107 member_id = "16"
    108 new_ss = ss.replace("#member_id#", member_id)
    109 print(new_ss)
    110 充值接口的用例编写、自动化用例设计
    111 前置:登陆
    112      获取登陆的返回结果里的 token,用户id,用户余额
    113 
    114 步骤:充值
    115 
    116 接口依赖/关联处理:
    117 1、将上一个接口的响应数据,提取出来(jsonpath/dict方式)之后,将它设置为全局变量(设置Data类的类属性)
    118 2、下一个接口的请求数据,若要替换,直接从全局变量中读取(获取Data类的类属性值)
    119 
    120 处理接口关联:
    121 第一步:提取值
    122       通过jsonpath从响应结果中提取,然后设置为全局变量。我的框架中Data类用来存储全局变量的。
    123       如何通过jsonpath去提取的呢?可能会提取1个值?可能会提取多个值?框架通用性,所有接口通用。
    124       1)在excel当中添加了一列:extract。如果当前这一行的请求,有需求要从响应中提取。
    125          那么就在extract列对应的位置,写上表达式。
    126          形式是字典形式,key-value.key就是变量名,value就jsonpath提取表达式。
    127       2)定义了一公共的提取方法:
    128          解析excel当中extract列,然后从响应结果中提取,然后设置为Data类的属性。
    129       3)在测试框架的接口自动化用例当中,通过判断extract列有没有值,来自动提取。
    130 
    131 第二步:替换值
    132 
    133 第一步:提取值
    134       通过jsonpath从响应结果中提取,然后设置为全局变量。我的框架中Data类用来存储全局变量的。
    135       如何通过jsonpath去提取的呢?可能会提取1个值?可能会提取多个值?框架通用性,所有接口通用。
    136       1)在excel当中添加了一列:extract。如果当前这一行的请求,有需求要从响应中提取。
    137          那么就在extract列对应的位置,写上表达式。
    138          形式是字典形式,key-value.key就是变量名,value就jsonpath提取表达式。
    139       2)定义了一公共的提取方法:
    140          解析excel当中extract列,然后从响应结果中提取,然后设置为Data类的属性。
    141       3)在测试框架的接口自动化用例当中,通过判断extract列有没有值,来自动提取。
  • 相关阅读:
    JDBC中大数据量的分页解决方法?
    JDBC中的Statement 和PreparedStatement的区别?
    JDBC操作数据库的步骤 ?
    存储过程和函数的区别?
    什么是MVC模式?   
    流行的框架部分?
    请描述一下Struts2的值栈结构,以及它是如何工作的?
    下载文件?
    Struts2的功能扩展点有哪些?
    请说说Struts1和Struts2的区别?
  • 原文地址:https://www.cnblogs.com/zhang-ping1205/p/14756112.html
Copyright © 2020-2023  润新知