数据驱动测试框架设计——8断言结果回写

本文介绍了一种利用Python openpyxl库自动化执行Excel中的测试案例,并将执行结果写回Excel的方法。通过HandExcel类加载和操作Excel文件,RunMain类运行测试用例并依据不同的断言方法对比预期和实际结果,最终更新测试结果。
摘要由CSDN通过智能技术生成

思路:1.handle_excel添加一个 写入数据的方法—42行的方法

# -*-coding:utf-8-*
import openpyxl
import os
''' 此处的文件名配置后续会放到配置文件里'''
filename = "case1.xlsx"
newfilename = os.path.dirname(os.path.dirname(__file__))+"/Case/"+filename

class HandExcel:
    def load_excel(self):
        '''加载文件'''
        open__excel = openpyxl.load_workbook(newfilename)
        return open__excel

    def get_sheet_data(self,index=None):
        '''加载sheet页'''
        sheet_name = self.load_excel().sheetnames
        if index == None:
            index = 0

        data = self.load_excel()[sheet_name[index]]
        return data

    def get_cell_value(self,row,cols):
        '''获取某一个单元格内容'''
        data = self.get_sheet_data().cell(row=row,column=cols).value
        return data

    def get_rows(self,index=None):
        '''获取行数'''
        row = self.get_sheet_data(index).max_row
        return row

    def get_rows_value(self,row):
        '''获取某一用例的内容'''
        row_list = []
        '''此处遍历对象,然后把对象的值加入到列表中'''
        for i in self.get_sheet_data()[row]:
            row_list.append(i.value)
        return row_list

    '''给excle添加内容的方法'''
    def excel_write_data(self,row,cols,value):
        '''加载excel文件'''
        wb = self.load_excel()
        '''激活文件'''
        wr = wb.active
        '''写入文件'''
        wr.cell(row,cols,value)
        '''保存文件'''
        wb.save(newfilename)
'''实例化该类,方便后续调用'''
excel_data = HandExcel()

2.run_main文件引入1新添加的方法,把结果写入excel
行数传,i+2,列数为11列;引入的代码请款40、42、48、50行代码,

# -*-coding:utf-8-*-
from Base.handle_excel import *
from Base.base_request import *
import json
from Base.handle_result import *
'''创建RunMain类实现运行用例的功能'''
class RunMain:

    def run_case(self):

        ''' 获取行数'''
        rows = excel_data.get_rows()
        '''除去表头需要遍历rows-1次'''
        for i in range(rows-1):
            '''i是从0开始,所以i+2,就和用例可以对应上,获取第i+2用例数据'''
            data = excel_data.get_rows_value(i+2)
            is_run = data[2]
            '''判断如果第二列数据为yes则执行'''
            if is_run == "yes":
                method = data[5]
                url = data[4]
                '''用封装的request发送请求'''
                res = request.run_main(method=method,url=url)
                '''打印出来方便查看'''
                print(res)
                '''获取实际result对应的code'''
                code = res["result"]
                '''获取实际的msg的值'''
                msg = res["msg"]
                '''获取断言方法'''
                assertion_method = data[8]
                '''获取预期结果'''
                excepect_result = data[9]
                '''如果断言方法是mer'''
                if assertion_method == "mer":
                    '''传入实际code获取config对应的msg值'''
                    config_msg = data_result.get_result(url,code)
                    '''进行断言'''
                    if msg == config_msg:
                        excel_data.excel_write_data(i + 2,11,"case通过")
                    else:
                        excel_data.excel_write_data(i + 2, 11, "case失败")
                        '''如果断言方法是result'''
                if assertion_method == "result":
                    '''这块需要注意返回结果获取的result是整型,而我们Excel中获取
                    的是字符串,所以这边需要把格式统一再做比对'''
                    if str(res["result"]) == excepect_result:
                        excel_data.excel_write_data(i + 2, 11, "case通过")
                    else:
                        excel_data.excel_write_data(i + 2, 11, "case失败")

if __name__ == '__main__':
    run = RunMain()
    run.run_case()

运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值