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 预期结果
原文地址:https://www.cnblogs.com/zhang-ping1205/p/14700044.html