使用Python进行回归测试

使用excel 储存要进行回归的case 以及case 描述 回归结果

在这里插入图片描述

安装python3 + openpyxl后

基本步骤:
1. 指定好相关文件的路径
2. 指定回归时覆盖率的收集类型
3. 指定随机数
4. 指定随机次数
5. 运行每个case
6. 读取sim的log 在log中查找有无 TEST PASS 字符 。有就在excel中标绿,没有就在log中查找有无TEST FAIL 有就标红,没有就标黄。
7. 将标红或标黄时的log文件复制到另一处 ,并将文件名改为case_time_seed 的形式,即记录了case名称又记录了回归时的随机数和时间。

注意事项

本代码仅起到思路启发作用,实际应用需要考虑更多,比如,标黄之后不能标绿以提示某个回归没有跑成功,红黄都有该如何取舍等。

完整代码

import os
import openpyxl
import time
import random

from openpyxl.styles import PatternFill


simv = "/home/ubuntu/Desktop/work/10GE_MAC/uvm/sim/simv " # simv file location
COV = "-cm line+cond+fsm+tgl+branch+assert " # coverage 
cm_name_cmd = "-cm_name "
cm_dir = "-cm_dir ./cov.vdb "
log_dir = "./log/"
seed_cmd = "+seed="
red_fill = PatternFill("solid", fgColor='FF0000')
green_fill = PatternFill("solid", fgColor='00FF00')
yellow_fill = PatternFill("solid", fgColor='FFFF00')
start_t = time.localtime() # start time
for i in range(1,100):
    t = time.localtime() # tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec
    timestamp = str(t.tm_year)+"_"+str(t.tm_mon)+"_"+str(t.tm_mday)+"_"+str(t.tm_hour)+"_"+str(t.tm_min)+"_"+str(t.tm_sec)
    wb = openpyxl.load_workbook("test_case.xlsx")
    sheet = wb.active
    # print(sheet.dimensions)     # 获取表格的尺寸大小
    row_num = sheet.max_row     # 行
    line_num = sheet.max_column # 列
    test_case_name = 'A' # test case line
    result         = 'C' # result line
    # rand_num = random.randint(-2147483648, 2147483647)
    # print(rand_num)

    # loop for all case
    for test in range(2,row_num+1):
        # generate rand seed
        rand_num = random.randint(-2147483648, 2147483647)
        seed = seed_cmd + str(rand_num)+" "
        # get test_case
        test_case = sheet[test_case_name+str(test)].value
        test_name = "+UVM_TESTNAME="+test_case+" "
        # log file name
        log_file = test_case+'_'+timestamp + str(rand_num)
        log_name = "-l "+log_dir+ log_file + " "
        # coverage vdb name
        cm_name = cm_name_cmd + test_case + timestamp + " "
        # print to termi and run 
        os.system(simv + test_name + log_name + COV + cm_name + seed)
        # use with avoid resources overflows 
            # just store err log file
        with open(log_dir+log_file,"r") as f_obj:
            if (f_obj.read().find("TEST PASS")):
                sheet[result+str(test)].fill = green_fill
                pass_flag = 1
                print("test pass")
            elif(f_obj.read().find("TEST FAIL")):
                sheet[result+str(test)].fill = red_fill
                pass_flag = 0
            else:
                sheet[result+str(test)].fill = yellow_fill
                print("NO INDICATE WORDS")
                pass_flag = 0
        wb.save("test_case.xlsx")
        print("pass_flag = %d",pass_flag)
        # remove pass log file
        if (pass_flag):
            os.remove(log_dir+log_file)
        print("repeat times "+ str(i))
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中有多种可以用于回归分析的库,其中最常用的是 `statsmodels` 和 `scikit-learn`。下面简要介绍一下使用这两个库进行回归分析的基本步骤: 1. 导入需要的库和数据 ```python import pandas as pd import statsmodels.api as sm from sklearn.linear_model import LinearRegression # 读取数据 data = pd.read_csv('data.csv') ``` 2. 拆分数据集 将数据集拆分为训练集和测试集,以便评估模型的表现。 ```python from sklearn.model_selection import train_test_split # 拆分数据集 train_data, test_data, train_target, test_target = train_test_split(data[['x1', 'x2',...]], data['y'], test_size=0.2, random_state=0) ``` 3. 统计模型 使用 `statsmodels` 或 `scikit-learn` 来拟合线性回归模型。`statsmodels` 提供了多种回归模型(如OLS、GLM等),而 `scikit-learn` 则提供了更多的机器学习算法。 使用 `statsmodels`: ```python # 添加常数列 train_data = sm.add_constant(train_data) # 拟合OLS模型 model = sm.OLS(train_target, train_data) result = model.fit() print(result.summary()) ``` 使用 `scikit-learn`: ```python # 创建线性回归模型 model = LinearRegression() # 拟合模型 model.fit(train_data, train_target) # 打印模型参数 print(model.intercept_) print(model.coef_) ``` 4. 评估模型 使用测试集来评估模型的表现。可以使用均方误差(MSE)、均方根误差(RMSE)、决定系数(R2)等指标来评估模型的表现。 ```python # 预测测试集 pred = model.predict(test_data) # 计算MSE和RMSE from sklearn.metrics import mean_squared_error mse = mean_squared_error(test_target, pred) rmse = np.sqrt(mse) print('MSE: ', mse) print('RMSE: ', rmse) # 计算R2 from sklearn.metrics import r2_score r2 = r2_score(test_target, pred) print('R2: ', r2) ``` 以上是使用 `statsmodels` 和 `scikit-learn` 进行回归分析的基本步骤。当然,具体的分析方法和步骤会因为不同的数据集和需求而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值