2015-04-04 10 views
8

Benim testler açıkça her işlevi gerçekleştirmek ve hiçbir kullanılmayan ithalat ya vardır.Flask Testi - kapsam neden içe aktarma ifadelerini ve dekoratörleri hariç tutar?

enter image description here

birisi yanlış yapıyor olabilir ne işaret misiniz: Oysa kapsama rapora göre, kod% 62 şu dosyasında idam asla?

cov = coverage(branch=True, omit=['website/*', 'run_test_suite.py']) 
    cov.start() 

    try: 
     unittest.main(argv=[sys.argv[0]]) 
    except: 
     pass 

    cov.stop() 
    cov.save() 

    print "\n\nCoverage Report:\n" 
    cov.report() 

    print "HTML version: " + os.path.join(BASEDIR, "tmp/coverage/index.html") 
    cov.html_report(directory='tmp/coverage') 
    cov.erase() 

cevap

7

Bu coverage.py FAQ üçüncü soru şudur:

S: fonksiyonları (veya sınıfların) cesetlerini yapmak Neden gösteri Burada

ben test paketi ve kapsama initialize nasıl çalıştırıldığı gibi, ancak def çizgileri yok mu? fonksiyonlar tanımlanmış olduktan sonra kapsama başlatıldığı için

bu gerçekleşir. Tanım satırları kapsamı olmadan yürütülür, daha sonra kapsama başlatılır, ardından işlev çağrılır. Bu organ ölçülür anlamına gelir, ancak işlevi kendisinin tanım değildir.

Bunu düzeltmek daha erken kapsama başlatın. Eğer için komut satırını kullanmak istersek tüm programı izlenecek, kapsama programınızı çalıştırın. API kullanıyorsanız, size işlevler tanımlamak modülleri aktarmadan önce coverage.start() çağırmanız gerekir. Sadece kullanmak

Size özel test script çok kapsama komut satırı ne yapacağını ötesinde yapmıyor
$ coverage run -m unittest discover 

, daha basit olacaktır:

yapılacak basit şey kapsama altına size testler çalıştırılır komut satırı.

İlgili konular