Как создать файлы журнала для выполнения теста - PullRequest
1 голос
/ 19 мая 2011

Я пытаюсь создать testcontroller и хочу, чтобы выполнение тестов собиралось в файл.

Я знаю, как использовать и перенаправлять выполнение тестового сценария на определенный файл, но мне интересно делать это с python поверх linux.

Таким образом, в этом случае при выполнении теста должен быть создан файл журнала, и все журналы выполнения, включая stdin, stdout и stderr, должны собираться в этот файл.

Запрос какого-то органа предложить мне, как реализовать такую ​​идею!

Спасибо OpenFile

Ответы [ 5 ]

5 голосов
/ 19 мая 2011

Есть несколько хороших модулей регистрации, начиная со встроенного logging, вот официальная поваренная книга . Среди более интересных сторонних библиотек - Бортовой журнал , вот довольно простой пример, который показывает только очень крутые функции :

import logbook

def f(i,j):
    return i+j

logger = logbook.Logger('my application logger')
log = logbook.FileHandler('so.log')
log.push_application()

try:
    f(1, '2')
    logger.info('called '+f.__name__)
except:
    logger.warn('failed on ')


try:
    f(1, 2)
    logger.info('called '+f.__name__)
except:
    logger.warn('choked on, ')

so.log тогда выглядит так:

[2011-05-19 07:40] WARNING: my application logger: failed on
[2011-05-19 07:40] INFO: my application logger: called f
3 голосов
/ 19 мая 2011

Попробуйте это:

import sys

# Save the current stream
save_out = sys.stdout

# Define the log file
f = "a_log_file.log"
# Append to existing log file. 
# Change 'a' to 'w' to recreate the log file each time.
fsock = open(f, 'a')

# Set stream to file
sys.stdout = fsock

###
# do something here 
# any print function calls will send the stream to file f
###

# Reset back the stream to what it was
# any print function calls will send the stream to the previous stream
sys.stdout = save_out
fsock.close()
2 голосов
/ 19 мая 2011

Вы можете написать такую ​​функцию:

def writeInLog(msg):
    with open("log", "a") as f:
        f.write(msg+"\n")

Она откроет файл " log " и добавит (" a ") сообщениес новой строкой, затем закройте файл.

2 голосов
/ 19 мая 2011

Открыть и записать в файл:

mylogfile = 'bla.log'
f = open(mylogfile, 'a')
f.write('i am logging! logging logging!....loggin? timber!....')
f.close()

поищите в корневом каталоге скрипта 'bla.log' и прочитайте, наслаждайтесь

0 голосов
/ 19 мая 2011
# Save the current stream
saveout = sys.stdout


f = "a_log_file.log"
fsock = open(f, 'w')

# Set stream to file
sys.stdout = fsock

###
# do something here 
# any print function will send the stream to file f
###

# Reset back the stream to what it was
sys.stdout = saveout
fsock.close()
...