单元测试是构建可靠软件的基础。测试类型多种多样,但单元测试最为重要。单元测试使您可以放心地将经过充分测试的代码片段作为基本单元,并在构建程序时依赖它们。它们扩展了您对可信代码的储备,超越了语言内置功能和标准库的范围。此外,Python 对编写单元测试提供了强大的支持。
运行示例
在深入探讨所有原则、启发式方法和指南之前,让我们先来看一个实际的单元测试示例。
创建一个名为 python_tests 的新目录,并添加两个文件:
- car.py
- test_car.py
通过添加 init.py 文件,将该目录设为 Python 包。文件的结构应如下所示:
<code>python_tests/ -__init__.py - car.py - test_car.py</code>
car.py 文件将用于编写我们在此示例中使用的自动驾驶汽车程序的逻辑,而 test_car.py 文件将用于编写所有测试。
car.py 文件内容:
class SelfDrivingCar: def __init__(self): self.speed = 0 self.destination = None def _accelerate(self): self.speed += 1 def _decelerate(self): if self.speed > 0: self.speed -= 1 def _advance_to_destination(self): distance = self._calculate_distance_to_object_in_front() if distance <p>这是一个针对 TestCase 类的单元测试。如下所示,获取 unittest 模块。</p> <pre class="brush:php;toolbar:false">from unittest import TestCase
然后,您可以重写 unittest 测试框架提供的 unittest.main 模块,方法是在测试文件的底部添加以下测试脚本。
if __name__ == '__main__': unittest.main()
继续并在 test_car.py 文件的底部添加测试脚本,如下所示。
import unittest from car import SelfDrivingCar class SelfDrivingCarTest(unittest.TestCase): def setUp(self): self.car = SelfDrivingCar() def test_stop(self): self.car.speed = 5 self.car.stop() self.assertEqual(0, self.car.speed) self.car.stop() self.assertEqual(0, self.car.speed) if __name__ == '__main__': unittest.main(verbosity=2)
要运行测试,请运行 Python 程序:
python test_car.py
您应该看到以下输出:
<code>test_stop (__main__.SelfDrivingCarTest) ... ok ---------------------------------------------------------------------- Ran 1 test in 0.000s OK</code>
测试发现
另一种方法,也是最简单的方法,是测试发现。此选项仅在 Python 2.7 中添加。在 2.7 之前,您可以使用 nose 来发现和运行测试。Nose 还有一些其他优点,例如运行测试函数而无需为测试用例创建类。但就本文而言,让我们坚持使用 unittest。
顾名思义,-v 标志:
SelfDrivingCarTest。
有几个标志可以控制操作:
python -m unittest -h
测试覆盖率
测试覆盖率是一个经常被忽视的领域。覆盖率是指您的测试实际上测试了多少代码。例如,如果您有一个带有 if 语句的函数,则需要编写测试来覆盖 if 语句的真值和假值分支。理想情况下,您的代码应该在一个包中。每个包的测试应该在包的同级目录中。在测试目录中,应该为包的每个模块提供一个名为 unittest 模块的文件。
结论
单元测试是可靠代码的基础。在本教程中,我探讨了单元测试的一些原则和指南,并解释了几个最佳实践背后的原因。您构建的系统越大,单元测试就越重要。但是单元测试是不够的。大型系统还需要其他类型的测试:集成测试、性能测试、负载测试、渗透测试、验收测试等。
此文章已更新,并包含 Esther Vaati 的贡献。Esther 是 Envato Tuts 的软件开发人员和撰稿人。
以上是在Python中编写专业的单位测试的详细内容。更多信息请关注PHP中文网其他相关文章!

ArraySareAryallyMoremory-Moremory-forigationDataDatueTotheIrfixed-SizenatureAntatureAntatureAndirectMemoryAccess.1)arraysStorelelementsInAcontiguxufulock,ReducingOveringOverheadHeadefromenterSormetormetAdata.2)列表,通常

ToconvertaPythonlisttoanarray,usethearraymodule:1)Importthearraymodule,2)Createalist,3)Usearray(typecode,list)toconvertit,specifyingthetypecodelike'i'forintegers.Thisconversionoptimizesmemoryusageforhomogeneousdata,enhancingperformanceinnumericalcomp

Python列表可以存储不同类型的数据。示例列表包含整数、字符串、浮点数、布尔值、嵌套列表和字典。列表的灵活性在数据处理和原型设计中很有价值,但需谨慎使用以确保代码的可读性和可维护性。

Pythondoesnothavebuilt-inarrays;usethearraymoduleformemory-efficienthomogeneousdatastorage,whilelistsareversatileformixeddatatypes.Arraysareefficientforlargedatasetsofthesametype,whereaslistsofferflexibilityandareeasiertouseformixedorsmallerdatasets.

theSostCommonlyusedModuleForCreatingArraysInpyThonisnumpy.1)NumpyProvidEseffitedToolsForarrayOperations,Idealfornumericaldata.2)arraysCanbeCreatedDusingsnp.Array()for1dand2Structures.3)

toAppendElementStoApythonList,usetheappend()方法forsingleements,Extend()formultiplelements,andinsert()forspecificpositions.1)useeAppend()foraddingoneOnelementAttheend.2)useextendTheEnd.2)useextendexendExendEnd(

TocreateaPythonlist,usesquarebrackets[]andseparateitemswithcommas.1)Listsaredynamicandcanholdmixeddatatypes.2)Useappend(),remove(),andslicingformanipulation.3)Listcomprehensionsareefficientforcreatinglists.4)Becautiouswithlistreferences;usecopy()orsl

金融、科研、医疗和AI等领域中,高效存储和处理数值数据至关重要。 1)在金融中,使用内存映射文件和NumPy库可显着提升数据处理速度。 2)科研领域,HDF5文件优化数据存储和检索。 3)医疗中,数据库优化技术如索引和分区提高数据查询性能。 4)AI中,数据分片和分布式训练加速模型训练。通过选择适当的工具和技术,并权衡存储与处理速度之间的trade-off,可以显着提升系统性能和可扩展性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

Dreamweaver Mac版
视觉化网页开发工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境