मैंने अभी Coverage.py मॉड्यूल का उपयोग करना शुरू कर दिया है और इसलिए यह जांचने के लिए एक सरल परीक्षण करने का निर्णय लिया है कि यह कैसे काम करता है।पायथन में cover.py का सही तरीके से उपयोग कैसे करें?
Sample.py
def sum(num1, num2):
return num1 + num2
def sum_only_positive(num1, num2):
if num1 > 0 and num2 > 0:
return num1 + num2
else:
return None
test.py
from sample import sum, sum_only_positive
def test_sum():
assert sum(5, 5) == 10
def test_sum_positive_ok():
assert sum_only_positive(2, 2) == 4
def test_sum_positive_fail():
assert sum_only_positive(-1, 2) is None
जैसा कि आप देख, मेरे सारे कोड परीक्षण और py.test साथ कवर किया जाता है उन सभी को पारित कहते हैं। मैं Coverage.py 100% कवरेज दिखाने की उम्मीद करता हूं। नहीं।
खैर, Coverage.py test.py फ़ाइल नहीं देख सकते हैं, तो मैं sample.py
फाइल करने के लिए परीक्षण कार्यों की नकल की और कवरेज फिर से भाग:
तब मैं कोड के इस ब्लॉक कहा:
if __name__ == "__main__":
print(sum(2, 4))
print(sum_only_positive(2, 4))
print(sum_only_positive(-1, 3))
और सभी परीक्षण कार्यों को हटा दिया गया।
क्यों यह इतना है: उसके बाद, Coverage.py 100% पता चलता है? Coverage.py कोड निष्पादन कवरेज नहीं, केवल निष्पादन कवरेज नहीं दिखाना चाहिए? मैंने Coverage.py के लिए एक आधिकारिक F.A.Q. पढ़ा है, लेकिन समाधान नहीं मिला।
चूंकि कई SO उपयोगकर्ता कोड परीक्षण और कोड कवरेज से परिचित हैं, मुझे उम्मीद है कि आप मुझे बता सकते हैं, मैं कहां गलत हूं।
मेरे पास सिर्फ एक विचार है: Coverage.py बस देख सकता है कि कोड की कौन सी रेखाएं निष्पादित नहीं की गई हैं इसलिए मुझे उन पंक्तियों के लिए परीक्षण लिखना चाहिए। लेकिन ऐसी लाइनें हैं जिन्हें पहले ही निष्पादित किया गया है लेकिन परीक्षणों से ढके नहीं हैं इसलिए Coverage.py यहां विफल हो जाएगा।
आप कवरेज/पायस्टेस्ट का आह्वान कैसे करते हैं? –
@Rogalski pytest: 'python -m py.test test.py' और कवरेज: 'python -m कवरेज run sample.py' (विंडोज़ पर) – Groosha