python实现接口自动化

python实现接口自动化


接口测试步骤:

  1. 读取测试用例
  2. 发送post请求
  3. 比对断言
  4. 结果写入
# 导入requests和openpyxl
import requests
import openpyxl
# 定义一个函数来封装读取测试用例的代码
def read_data(filename,sheetname):
    wb = openpyxl.load_workbook(filename) #加载这个工作薄对象
    sheet = wb[sheetname] #找到表单
    max_row = sheet.max_row #获取最大行数
    case_list = [] #创建一个空列表
    for i in range(2,max_row+1): # 从第二行开始循环行数,range取头不取尾所以要+1
        case = dict(
            case_id = sheet.cell(row=i,column=1).value, #读取表单i行1列的值并赋值
            url=sheet.cell(row=i, column=5).value,
            data=sheet.cell(row=i, column=6).value,
            expected_result=sheet.cell(row=i, column=7).value)
        case_list.append(case) #每次循环在该列表里追加一个元素
    return case_list

# 定义一个函数来封装发送post请求的代码
def post_func(post_url,post_data):
    response = requests.post(url=post_url,data=post_data) #发送post请求
    html = response.json() #获取返回结果的字典格式
    return html

# 定义一个函数来封装结果写入的代码
def write_result(filename,sheetname,row,colum,final_result):
    wb = openpyxl.load_workbook(filename) #加载这个工作薄对象
    sheet = wb[sheetname] #找到表单
    sheet.cell(row,colum).value = final_result #结果回写
    wb.save(filename) #保存文件

# 定义一个函数用来封装整个执行的代码
def execute_func(filename,sheetname):
    cases = read_data(filename,sheetname) #调用读取测试用例的函数得到用例列表
    for case in cases: #循环用例列表
        case_id = case['case_id']
        url = case['url']
        data = case['data']
        data = eval(data) # 将字符串强制转换为字典
        expected_result = case.get('expected_result')
        expected_result = expected_result.replace('null','None') #将null转换成None
        expected_result = eval(expected_result) #将字符串强制转换为字典
        expected_msg = expected_result['msg'] #获取msg的值
        real_result = post_func(url,data) #调用发送post函数
        real_msg = real_result['msg'] #得到返回json格式数据中的msg的值
        if real_msg == expected_msg: # 判断期望结果和实际结果是否相同
            print('第{}行测试用例执行通过'.format(case_id)) #格式化输出
            final_result = '通过'
        else:
            print('第{}行测试用例执行不通过'.format(case_id))  # 格式化输出
            final_result = '不通过'
        print('-'*20)
        write_result(filename,sheetname,case_id,8,final_result) #调用结果写入函数

execute_func('test_case.xlsx','register') #最后直接调用函数

你可能感兴趣的:(笔记)