Это действительно довольно просто, не так много нужно менять:
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
добавляет новый лист каждый раз, когда он вызывается, вы, вероятно, захотитеизменить эту функцию, чтобы каждый раз записывать в одну и ту же таблицу (но это тема для другого вопроса по этому вопросу).
Как я уже сказал, в вашем коде много проблем, но основная логика здесь (в обоих моих примерах) нет проблем с вызовом функций внутри друг друга, чтобы получить свои результаты (или передать им аргументы).