接口自动化测试第二天,需要用到的第三方库有os,openpyxl,json,pytest,requests
首选我们今天的目标是写出一个测试登录用例的脚本,这里我用的是分层设计,整个框架暂时被分为工具层,测试数据层,用例层。
工具层:这里我会先放目前需要用到的脚本
测试数据层:用例执行时需要的测试数据,我会以excel格式存放在这里
用例层:这里放的是自己编写的自动化测试脚本
首先先确定自己需要的工具,目前为止,我需要的工具有2个,一个是读取excel测试数据的工具,一个是识别整个框架的文件位置工具。这里开始写
1.读取excel数据的工具
from openpyxl import load_workbook
class MyExcel:
def __init__(self,excelpath,sheet_name):
#打开本地文件
self.wb = load_workbook(excelpath)
self.sh = self.wb[sheet_name]
def select_sheet(self,sheet_name):
self.sh = self.wb[sheet_name]
def read_all_data(self):
all_datas = list(self.sh.values)
titles = all_datas[0]
case_list = []
for row_data in all_datas[1:]:
new_dict = dict(zip(titles,row_data))
print(new_dict)
case_list.append(new_dict)
return case_list
2.识别文件位置的工具
import os
#项目路径
basedir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
#测试数据excel目录
testdata_dir = os.path.join(basedir,"testdata")
两个工具已经写好了,接下来是准备测试数据
3.测试数据的准备
#注意,这里的req_data数据用json格式来写
4.自动化测试脚本
import os
import json
import pytest
import requests
from tools.handle_path import testdata_dir
from tools.handle_excel import MyExcel
#读取测试数据 - excel中一行一个用例数据
me = MyExcel(os.path.join(testdata_dir,"cases.xlsx"),sheet_name="登录")
all_datas = me.read_all_data()
class TestAdminLogin:
@pytest.mark.parametrize("case",all_datas)
def test_login(self,case):
resp = requests.request(case.get("method"),case.get("url"),
json=json.loads(case.get("req_data")))
print(resp.status_code)
print(resp.text)
#断言
assert case.get("expected") in resp.text
注意:因为在excel中的req_data是用json格式写的,所以在python中要将它转换为字典格式,需要导入一个第三方库json来进行转换
json.loads()
标签:case,self,excel,测试数据,json,接口,requests,os,抓包 From: https://www.cnblogs.com/xuhaotest/p/17926040.html