zoukankan      html  css  js  c++  java
  • api课堂笔记_day05

      1 # 接口的框架开始搭建:
      2 1、首页对框架进行分层设计:
      3 拓展知识点:可以用.py文件:或者写在yaml文件下:注释引导说明是怎么用的;干什么的
      4 1.1、比如公用的 common层
      5 2、测试用例的脚本:testcase
      6 3、测试数据的存放:testdatas
      7 引入main.py输出allure测试报告
      8 1、对于excle里面的数据怎么读取出来的使用的什么方法?用的什么库?
      9 安装 :pip install openpyxl
     10 row 代表行
     11 column 列
     12 from openpyxl import load_workbook
     13 
     14 # excel的文件路径
     15 excel_path = r"D:Pychram-Workspacepy37-接口自动化day5	estdatas测试用例.xlsx"
     16 
     17 # 1、加载一个excel,得到工作薄 Workbook
     18 wb = load_workbook(excel_path)
     19 
     20 # 2、选择一个表单- 通过表单名 Sheet
     21 sh = wb["注册接口"]
     22 
     23 # 3、在选择的表单当中,读取某个单元格的数据、修改/写入数据到某个单元格  Cell
     24 # 行号和列号都是从1开始
     25 # 读取
     26 cell_value = sh.cell(2, 3).value  # 读取
     27 print(cell_value)
     28 
     29 # 得到当前sheet的总行号,总列号
     30 row_nums = sh.max_row
     31 col_nums = sh.max_column
     32 
     33 # 只读取第一行(作为key)
     34 # 行号是1  通过代码自动得到列号
     35 # keys = []
     36 # for col_index in range(1, sh.max_column + 1):
     37 #     keys.append(sh.cell(1, col_index).value)
     38 # print(keys)
     39 
     40 # # 遍历行号,取第一行
     41 # for row_index in range(2, sh.max_row + 1):
     42 #     values = []
     43 #     # 在每一行里面,从第1列开始,获取所有列的值
     44 #     for col_index in range(1, sh.max_column + 1):
     45 #         values.append(sh.cell(row_index, col_index).value)
     46 #     # keys和values打包 - zip函数
     47 #     case = dict(zip(keys, values))
     48 #     print(case)
     49 
     50 # 方式二 -
     51 data = list(sh.values)
     52 print(data)
     53 keys = data[0] # 获取所有的列名
     54 all_data = []
     55 for row in data[1:]:
     56     row_dict = dict(zip(keys,row))
     57     all_data.append(row_dict)
     58 
     59 
     60 # # 列表推导式  列表名 = [值 表达式]
     61 # keys = [sh.cell(1, col_index).value for col_index in range(1, sh.max_column + 1)]
     62 
     63 
     64 # # 读取所有行
     65 # for row in sh.rows:
     66 #     # print(row)
     67 #     for item in row:
     68 #         print(item.value, end="  ")
     69 #     print()
     70 
     71 # # 给某个单元格写入值
     72 # sh.cell(2, 3).value = "get"
     73 #
     74 # # 一旦做了修改,就要保存
     75 # # filename如果不是打开的excel文件,那就是另存为
     76 # # 如果是打开的excel文件,保存到原文件中
     77 # # 保存的时候,要保证没有其它程序在使用当前文件。否则会报Permission Error
     78 # wb.save(excel_path)
     79 2、zip函数的用法
     80 a = ["class", "teacher", "student"]
     81 b = ["py37", "xj", "many", "hello"]
     82 c = [1, 2, 3]
     83 
     84 res = dict(zip(a,b))
     85 print(res)
     86 
     87 res = list(zip(a,b,c))
     88 print(res)
     89 3、json格式与字典的区别?
     90 import json
     91 """
     92 python: None
     93 java/javascript: null(python不认识。如果响应结果当中有null, 需要转换成None) 
     94 
     95 字典:数据类型。
     96 json: 数据格式。 json格式的字符串
     97 
     98 内置库:json
     99 json.loads()  把json串,转换成python字典
    100 json.dumps()  把python字典,转换成json串
    101 
    102 关于requests处理json参数的文章:
    103      https://www.cnblogs.com/Simple-Small/p/9830270.html
    104 
    105 """
    106 
    107 req_data = '{"mobile_phone": "18610100022","pwd": "123456789","reg_name": "py37小简", "test": null}'
    108 req_dict = json.loads(req_data)
    109 print(type(req_dict))
    110 print(req_dict)
    111 # req_dict_eval = eval(req_data) # eval无法自动处理null
    112 # my_excle.py
    113 from openpyxl import load_workbook
    114 
    115 class MyExcel:
    116 
    117     def __init__(self, excel_path, sheet_name):
    118         # 1、加载一个excel,得到工作薄 Workbook
    119         wb = load_workbook(excel_path)
    120         # 2、选择一个表单- 通过表单名 Sheet
    121         self.sh = wb[sheet_name]
    122 
    123     def read_data(self):
    124         # 注意:接口的请求数据,读取出来是字符串。
    125         # 存储表单下读取到的所有数据 - 每一个成员都是一个字典
    126         all_data = []
    127         data = list(self.sh.values)
    128         keys = data[0]  # 获取所有的列名
    129         for row in data[1:]:
    130             row_dict = dict(zip(keys, row))
    131             all_data.append(row_dict)
    132         return all_data
    133 
    134 if __name__ == '__main__':
    135     # excel的文件路径
    136     excel_path = r"/Users/zhangping/PycharmProjects/py_37/Py_Api接口自动化/class_api05/testdatas/测试用例.xlsx"
    137     me = MyExcel(excel_path, "注册接口")
    138     cases = me.read_data()
    139     for case in cases:
    140         print(case)
    141 # my_requests.py
    142 
    143 # test_register
    144 import pytest
    145 import json
    146 
    147 from py_37.Py_Api接口自动化.class_api05.common.my_requests import MyRequests
    148 from py_37.Py_Api接口自动化.class_api05.common.my_excel import MyExcel
    149 
    150 
    151 # 第一步:读取注册接口的测试数据 - 是个列表,列表中的每个成员,都是一个接口用例的数据。
    152 excel_path = r"/Users/zhangping/PycharmProjects/py_37/Py_Api接口自动化/class_api05/testdatas/测试用例.xlsx"
    153 me = MyExcel(excel_path, "注册接口")
    154 cases = me.read_data()
    155 
    156 # 第二步:遍历测试数据,每一组数据,发起一个http的接口
    157 # 实例化请求对象
    158 mq = MyRequests()
    159 
    160 class TestRegister:
    161 
    162     @pytest.mark.parametrize("case", cases)
    163     def test_regiser(self,case):
    164         # 把json格式的字符串,转换成一个字典
    165         req_dict = json.loads(case["req_data"])
    166         resp = mq.send_requests(case["method"], case["url"], req_dict)
    167         print(resp.json())
    168 testdatas
    169 excle 测试用例
    170 用例格式规范
    171 id编号: title标题 :method 方法 url (请求地址)  req_data(参数) expected 预期结果
  • 相关阅读:
    ajax_基础1
    省市数据库脚本TblArea.
    c#中怎么使用dos命
    Lambda表达式
    面试收录
    .Net牛逼程序猿要懂得
    Web.config 配置文件
    sql 查询所有数据库、表名、表字段总结
    Json在net与页面之间的传递
    『转』SAP统驭科目解释
  • 原文地址:https://www.cnblogs.com/zhang-ping1205/p/14700044.html
Copyright © 2011-2022 走看看