生成具有不同testname的报告

时间:2015-11-27 05:43:08

标签: python python-2.7

我正在生成一个包含7个标题和相应值的报告,其中测试名称是pdf文件的第一个值。我将测试名称硬编码为“report1”.Below是我的代码

testname = "report1"
try:
     report(testname,arg2,arg3,arg4,arg5,arg6,arg7)
except Exception:
     print "Error during reporting.Check the input parameters"

def report(self,testname,arg2,arg3,arg4,arg5,arg6,arg7):
    for name in self.testname:
        "report runs here"

报告如下所示

TestName Cvalue  RValue  Lower  Higher  Measured   Result
report1  1500    50      100    10000   845        pass

我需要再次运行应用程序以获取第二个报告,其测试名称为“report2”。我必须更改testname,以便在每次运行时testname必须将数字增加1并显示“report2”。请提出建议!

2 个答案:

答案 0 :(得分:0)

您需要在某处存储“下一个报告编号”,以使其在脚本运行之间保持不变。

简单愚蠢的方法是每次扫描您的报告目录,并根据最大的现有报告选择下一个报告名称。

例如,如果您已经拥有:

my_reports/
    report1
    report2

下一个名称应为report3

一个简单的代码片段:

import os
import re

def get_next_report_name(report_dir):
    """Returns next report file name."""
    max_number = 0
    for file_name in os.listdir(report_dir):
        match = re.match(r'^report(\d+)$', file_name)
        if match:
            max_number = max(max_number, int(match.group(1)))
    return 'report{0}'.format(max_number + 1)

report_dir = 'INSERT YOUR REPORT DIR HERE'
testname = get_next_report_name(report_dir)

请注意,此算法不可扩展,因为您拥有的文件越多,查找下一个数字所需的时间就越多。对于现实生活中的使用,你应该发明更有效的东西。

答案 1 :(得分:0)

要实现此功能,您必须在某处存储current_report_number。您可以使用python pickle模块来持久化current_report_number

您可以参考此代码段。

import pickle


try:
    report_id = pickle.load(open("config.dat"))
except IOError:
    #First run, config file does n't exist
    report_id = 0
report_id += 1
print report_id


# REPORT GEN START

# REPORT GEN END

#persist current report id
pickle.dump(report_id, open("config.dat", "w"))