Tüm çıktıları günlüğe kaydetmek için python günlüğe kaydetme modülünü kullanmak istiyorum, böylece yazmayı denediğim bir test çerçevesine dahil edebilirim. Bunun amacı, testlerin 2 set çıktı ile çalıştırılmasıdır; biri basit bir çıktı ile test durumu adımlarını ve daha fazla hata ayıklama seviyesi çıktısını verir, böylece işler ters gittiğinde mümkün olduğunca fazla bilgiye sahip oluruz. Çıktı, insanlara e-posta gönderebildiğim, diğeri de hata durumunda tutulan iki dosyaya yerleştirilecek. TextTestRunner'ın bir stream kullanabileceğini fark ettim, bu logging modülü ile kullanılabilir mi? Python 2.7'deki yeni özelliklerden bazılarını kullanmayı planlıyorum.Kayıt modülünü python'da en uygun modül ile nasıl kullanabilirim?
cevap
Yapabilirsin, ama senin en iyi yaklaşımın olduğundan emin değilim. Bu yaklaşım için
, olur:TextTestRunner
tarafından kullanılabilecek bir bellek içi akışı başlatır. Bu,io.StringIO
'un neredeyse mükemmel olacağı bir şeydir, yalnızca Unicode girdisi ile çalıştığı ve TextTestRunner'ın Unicode'u düzgün bir şekilde akışa yazdığından emin değilim. Diğer seçeneğiniz, amacınıza hizmet eden kendi bellek içi akışınızı kodlamak ve belki de bir kodlayıcıylaStringIO
'u sarmak olabilir.Kendi TextTestRunner'ınızı oluşturun ve bu bellek içi akışla başlatın.
Akıştan okuyan ve günlüğüne yazan bir sınıf oluşturun. Bu yaklaşım ile
class StreamLogger(object): def __init__(self, input_stream, output_logger): self.input_stream = input_stream self.output_logger def run(self): while True: line = input_stream.readline() if not line: break output_logger.error(line)
Sorunları:
Bu kadar basit olabilir Sen fazla yok
- eğer farklı etmek TextTestRunner çıkışının farklı bölümlerini yönlendiren herhangi esneklik günlük seviyeleri.
- TextTestRunner, yanlış yapılandırılmışsa, muhtemelen istemediğiniz bir sürü şey yazacaktır. Varsayılan ayrıntı, test ederken ilerleme noktaları yazacak olan 1'dir. Bu, muhtemelen sadece çıkış kaydında yolunuza girecektir.
- Eğer bunu çok iyi yaparsanız, tüm çıktınızı akışa yazdıktan sonra
stream_logger.run()
'u arayacaksınız. Böylece, günlüğe kaydetme çıktısını gerçek zamanda almazsınız ve günlüğe kaydetme zaman damgalarınız işe yaramaz. Örneğin, okumak için ayrı bir iş parçacığı oluşturarak bunu çözebilirsiniz, ancak aynı anda çalışan bir okuyucu ve yazıcı iş parçacığını işleyebilecek bir akış seçmeniz/döndürmeniz veya bir işlemi iptal etmeniz ve bellek içi akışı atlatmanız gerekiyorsa, ya da nispeten karmaşık bir şey. diyelim ki, denilen, LoggingTestRunner - - çıkış tam olarak istediğiniz şekilde günlükçüsüne Test çıktı yazıyor
yerine öneririm yaklaşım akışları vazgeçmek ve sadece kendi test koşucu geri almaktır. Bu, bu sorunların üçünü önlemenizi sağlayacaktır.
- 1. Node.js zlib modülünü seçeneklerle nasıl kullanabilirim?
- 2. Google Haritalar ile en uygun harita yönlendirmesi
- 3. En az bir modül, bir bağımlı modül
- 4. Ruby on Rails, filtre değerleri dizisi ile en uygun aramayı?
- 5. iOS'ta MVC'yi en iyi şekilde nasıl kullanabilirim
- 6. dd: En uygun blocksize nasıl hesaplanır?
- 7. Bir değişkeni Perl'de modül adı olarak nasıl kullanabilirim?
- 8. Modül modelini göstermek yerine ES6 modülünü kullanmanın avantajı nedir?
- 9. JAVA - En uygun veri yapısı
- 10. CodeIgniter'de uygun nesne yönelimli modelleri kurucularla nasıl kullanabilirim?
- 11. VectorDrawable'ı Android Araç Çubuğu ile nasıl kullanabilirim?
- 12. Nümerik dizi veya pandalarla pythonda rutini sadeleştirme
- 13. Bir python modülünü şef ile nasıl kurarsınız?
- 14. Setup.py npm modülünü nasıl kurarım?
- 15. Python modülünü Bash'ten içe aktarma
- 16. cakephp'deki en son kayıt nasıl bulunur?
- 17. Bir komut dosyasındaki bir PowerShell modülünü, kullanıcının oturumuna yüklenen modülden ayrılmadan nasıl kullanabilirim?
- 18. Bağımlılıkları silmek için en uygun yol
- 19. Nesnelerin dizilerini karşılaştırın, en uygun yol
- 20. Yüklenebilir çekirdek modülünü kaldıramıyor
- 21. Bir çekirdek modülünü sınama
- 22. Kukla - diğer modül manifolduna göre modül kurun
- 23. django ortam test değişkenleri en uygun testlerde
- 24. VB6 modülünü VB.NET'e dönüştürme
- 25. Firebase Fan çıkışı - en uygun maliyetli yol?
- 26. Knapsack varyantı kullanarak en uygun MLB dizisi
- 27. Uyumlu modül modülleri nasıl yüklenir?
- 28. Haskell'de kayıtların ihracatı nasıl kontrol edilir? Aşağıdaki örnek modül ile
- 29. iPython defterinde argparse ile yazılmış modül nasıl çağrılır?
- 30. Marka için en uygun değer -j
Teşekkürler. Yapmam gereken şeylerin bir kısmı için neye ihtiyacım varmış gibi geliyor. – user197674