我正在生成一个包含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”。请提出建议!
答案 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"))