Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan modul doctest untuk ujian dokumen dalam Python 3.x

Cara menggunakan modul doctest untuk ujian dokumen dalam Python 3.x

王林
王林asal
2023-07-30 17:03:20966semak imbas

Cara menggunakan modul doctest untuk ujian dokumen dalam Python 3.x

Pengenalan:
Dalam proses menulis kod, selalunya perlu menulis dokumen untuk menerangkan penggunaan dan output yang dijangkakan bagi fungsi atau kelas. Walau bagaimanapun, dokumentasi boleh menjadi lapuk atau tidak tepat dengan mudah, yang boleh membawa kepada keputusan yang tidak dijangka atau salah. Untuk menyelesaikan masalah ini, Python menyediakan doctest modul terbina dalam, yang membolehkan anda menulis kod contoh dalam docstring dan menyemak sama ada ia memenuhi hasil yang diharapkan apabila dilaksanakan.

1. Pengenalan kepada modul doctest
Modul doctest ialah modul terbina dalam Python yang menyediakan cara yang mudah dan boleh dipercayai untuk menguji contoh kod. Ia melakukan ini dengan melaksanakan kod sampel yang diberikan dalam docstring dan mengesahkan bahawa outputnya sepadan dengan output yang dijangkakan. doctest menggabungkan dokumentasi penulisan dan ujian penulisan menjadi satu, menjadikan ujian lebih mudah untuk dikekalkan.

2 Cara menulis doctest
Apabila menulis doctest, kita perlu menulis kod sampel dalam rentetan dokumentasi modul, fungsi atau kaedah dan menggunakan tag selepas hasil yang dijangkakan untuk mewakili kod sampel dan output yang dijangkakan. Contohnya, contoh berikut: 标记来表示示例代码和预期输出。比如以下的例子:

def add(a, b):
    """
    计算两个数的和
    
    示例:
    >>> add(2, 3)
    5
    
    >>> add(10, 5)
    15
    """
    return a + b

三、如何执行 doctest
我们可以使用 doctest 模块提供的 testmod() 函数来执行 doctest。这个函数会自动查找模块中的文档字符串并执行其中的示例代码,然后和预期输出进行比对。

import doctest

doctest.testmod()

四、运行结果
执行 doctest 后,如果所有示例代码的输出与预期输出相符,那么输出为空;如果有示例代码的输出与预期输出不符,那么会打印出错误信息。

下面是示例代码的运行结果:

**********************************************************************
File "example.py", line 5, in __main__.add
Failed example:
    add(2, 3)
Expected:
    5
Got:
    6
**********************************************************************
File "example.py", line 9, in __main__.add
Failed example:
    add(10, 5)
Expected:
    15
Got:
    16
**********************************************************************
1 items had failures:
   2 of   2 in __main__.add
***Test Failed*** 2 failures.

在这个例子中,我们可以看到有两个测试用例(add(2, 3)add(10, 5))的结果与预期输出不符,因此 doctest 报告了两个失败。

五、如何扩展 doctest
除了简单的示例代码和预期输出之外,doctest 还支持更多高级的测试方式。比如,我们可以使用 ... 来表示多行输出,使用 # 来表示注释等。下面是一个更复杂的示例:

def average(numbers):
    """
    计算列表中数字的平均值
    
    示例:
    >>> average([1, 2, 3, 4, 5])
    3
    
    >>> average([10, 20, 30])
    20
    
    >>> average([])
    0
    
    >>> average([1, 2, 3, 4, 5, ...])
    3
    """
    if len(numbers) == 0:
        return 0
    return sum(numbers) / len(numbers)

这个示例使用了 ... 来表示多行输出,在最后一个示例中我们用 ...rrreee

3 Cara melaksanakan doctest

Kita boleh menggunakan fungsi testmod() yang disediakan oleh modul doctest untuk melaksanakan doctest. Fungsi ini secara automatik akan mencari docstring dalam modul dan melaksanakan kod sampel di sana, kemudian membandingkannya dengan output yang dijangkakan.
rrreee

4. Hasil berjalan

Selepas melaksanakan doctest, jika output semua kod sampel sepadan dengan output yang dijangkakan, output akan kosong jika output mana-mana kod sampel tidak sepadan dengan output yang dijangkakan, mesej ralat akan dicetak .

🎜Berikut ialah keputusan menjalankan kod sampel: 🎜rrreee🎜Dalam contoh ini, kita dapat melihat bahawa terdapat dua kes ujian (add(2, 3) dan add(10 , 5 )) tidak sepadan dengan output yang dijangkakan, jadi doctest melaporkan dua kegagalan. 🎜🎜5. Cara melanjutkan doctest🎜Selain kod sampel mudah dan output yang dijangkakan, doctest juga menyokong kaedah ujian yang lebih maju. Sebagai contoh, kita boleh menggunakan ... untuk mewakili output berbilang baris dan # untuk mewakili ulasan, dsb. Berikut ialah contoh yang lebih kompleks: 🎜rrreee🎜Contoh ini menggunakan ... untuk mewakili output berbilang baris Dalam contoh terakhir kami menggunakan ... untuk mewakili Terdapat lebih banyak elemen kemudian dalam senarai, tetapi tidak kira apa elemen tersebut. 🎜🎜VI Kesimpulan🎜Artikel ini memperkenalkan cara menggunakan modul doctest untuk ujian dokumen dalam Python 3.x. Ia boleh membantu kami menulis dokumen yang jelas dan tepat serta mengesahkan ketepatan dokumen melalui ujian automatik. Dengan menulis kes ujian, kita boleh lebih memahami cara fungsi atau kelas digunakan dan memastikan ia berfungsi seperti yang diharapkan. 🎜🎜Dengan menggunakan modul doctest secara rasional, kualiti dan kebolehselenggaraan kod boleh dipertingkatkan dengan banyak. Adalah disyorkan bahawa semasa menulis kod, anda menulis docstrings untuk fungsi dan kelas dan menulis kes ujian di dalamnya. Ini akan membantu mengekalkan bunyi kod anda dan menyediakan kod contoh yang berguna untuk dibaca oleh orang lain semasa membaca dokumentasi. 🎜

Atas ialah kandungan terperinci Cara menggunakan modul doctest untuk ujian dokumen dalam Python 3.x. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn