如果我想执行test1并将结果传递给excel,然后执行test2然后传递结果,我该怎么办?现在,所有测试都必须一起执行。有可能吗?
import os
import xlswriter
from datetime import datetime
import time
def save_results():
os.chdir(r'C:\Users\vrozakos\Documents\10P_Results')
workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': True})
worksheet.set_column('A:A', 20)
worksheet.write('B1', test_1())
worksheet.write('B2', test2())
workbook.close()
def test1():
output = str(ser.read(1000).decode())
output = str(output)
if "0x1" in output :
print('Pass')
return 'Pass'
else:
print('Fail')
return 'Fail'
def test2():
output2 = str(ser.read(1000).decode())
print(output2)
test2_output = str(output2)
if "0x1" in test2_output:
print('Pass')
return 'Pass'
else:
print('Fail')
return 'Fail'
答案 0 :(得分:3)
这真的很简单,无需太多更改:
def save_results():
os.chdir(r'C:\Users\user\Documents\Results')
workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': True})
worksheet.set_column('A:A', 20)
worksheet.write('A1', test1())
worksheet.write('B1', test2())
workbook.close()
注意,我只是在需要结果的地方调用了这些函数。我认为这里缺少的其他变量已经在您的代码的其他地方定义了。
编辑:
或者,根据我的评论,我可以从每个测试中调用save_results
(仅在运行该测试时),但是必须让save_results
接受一些参数:
def save_results(result, target_cell):
os.chdir(r'C:\Users\vrozakos\Documents\10P_Results')
workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': True})
worksheet.set_column('A:A', 20)
worksheet.write(target_cell, result)
workbook.close()
def test1():
output = str(ser.read(1000).decode())
output = str(output)
if "0x1" in output :
result = 'Pass'
else:
result = 'Fail'
print(result)
save_results(result, 'A1')
def test2():
output2 = str(ser.read(1000).decode())
print(output2)
test2_output = str(output2)
if "0x1" in test2_output:
result = 'Pass'
else:
result = 'Fail'
print(result)
save_results(result, 'B1')
不过,您应该注意,每次调用save_results
都会添加一个新工作表,您可能希望修改此函数以每次都在同一工作表中编写(但这是另一个问题的主题)问题)。
就像我说的那样,您的代码有很多问题,但是这里的基本逻辑(在我的两个示例中)是在彼此内部调用函数以获取结果(或将参数传递给它们)没有问题。
答案 1 :(得分:3)
最好的解决方案似乎就是这个,您应该遵循以下步骤:
def save_results():
os.chdir(r'C:\Users\user\Documents\Results')
workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': True})
worksheet.set_column('A:A', 20)
worksheet.write('A1', test1())
worksheet.write('B1', test2())
workbook.close()
答案 2 :(得分:0)
def save_results(result):
os.chdir(r'C:\Users\vrozakos\Documents\10P_Results')
workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': True})
worksheet.set_column('A:A', 20)
worksheet.write('A1', 'PLL TEST', bold)
worksheet.write('B1',result) --> result is string value from pll_test function
workbook.close()
def pll_test():
output = str(ser.read(1000).decode())
alarm_output = str(output)
if "pll reg=0x1 val=0x3f" in alarm_output :
save_results("pass") --> pass value to function
print('Pass')
else:
save_results("fail")
print('fail')
答案 3 :(得分:0)
您可以从pll_test函数的主函数中接收该值。如果要在打印语句之后返回,则必须在该打印语句之后添加该行作为返回。
现在,将返回值作为参数传递给调用save_results函数。