Programımdaki iki dosyayı karşılaştırıyorum. Aynı ise, başarısızlık olarak başka bir başarı olarak basıyorum. Dosyaları karşılaştırmada hata oluştuğunda e-posta göndermek için jenkins adında bir tümleştirme aracı kullanıyorum - hatayı doğru şekilde ele almalıyım. Birisi bana hatanın nasıl halledileceğini söyleyebilir mi?python kullanarak hataları nasıl ele alınır?
Error_Status=0
def compare_files(file1, file2):
try:
with open(file1, 'rb') as f_file1, open(file2, 'rb') as f_file2:
if f_file1.read() == f_file2.read():
print 'SUCCESS \n'
#print 'SUCESS:\n {}\n {}'.format(file1, file2)
else:
print 'FAILURE \n'
Error_Status=1
except IOError:
print "File is NOT compared"
Error_Status = 1
Jenkins konsol çıkışı:
E:\Projekte\Audi\Cloud_SOP17_TTS>rem !BUILD step: Execute test: tts.py
E:\Projekte\Audi\Cloud_SOP17_TTS>call python tts.py file1 file2 || echo failed
INPUT ENG: I am tired
Latency: 114msec
[ERROR] Can't Create Reference PCM or Response JSON files!
INPUT GED: facebook nachricht schönes wetter heute
Latency: 67msec
INPUT GED: erinnere mich an den termin heute abend
Latency: 113msec
E:\Projekte\Audi\Cloud_SOP17_TTS>echo Started at: 15:51:25.37
Started at: 15:51:25.37
E:\Projekte\Audi\Cloud_SOP17_TTS>exit 0
Archiving artifacts
Recording plot data
Saving plot series data from: E:\Projekte\Audi\Cloud_SOP17_TTS\Backups\tts_2016_02_04.py
Not creating point with null values: y=null label= url=
No emails were triggered.
Finished: SUCCESS
Bu betiği nasıl Jenkins'den arıyorsunuz? Standart olmayan bir çıkış koduyla çıkabilirsiniz veya belki bir istisna oluşturabilirsin. Ya da Python yerine bash komutlarını kullanarak dosyaları farklı bir şekilde karşılaştırın. –
Sadece 'diff' kullanabilirsiniz. Eğer dosyalar aynı ise, çıkış kodu "0", eğer farklıysa, çıkış kodu "1" dir. Çıkış kodunu almak için '$?' Kullanın. –
Çalışma alanım var, kodumu orada kopyaladım. Kodumu her bir saat için çalıştırmayı planladım. 'FAILURE' yazısının altındaki kodumda sadece çıkış yaptım, ancak işlemiyor. – sam