软件开发公司通过演示单元测试学习OpenStack开发

软件开发公司通过演示单元测试学习OpenStack开发

* 来源: * 作者: * 发表时间: 2020-10-07 0:11:29 * 浏览: 0
软件开发公司,本文将进入单元测试部分,这也是最后的基础知识。本文将重点介绍Python和OpenStack中单元测试的生态环境。通过演示了解在OpenStack上开发mdash,mdash和单元测试的重要性。单元测试工具unittest mock testtools fixturesstestscenarios subunit testrepository coverage coverage coverage testscenarios subunit testrepository tox coverage coverage test unit test management framework测试单位测试环境管理小型测试库tox测试用例代码架构摘要系列Postscript单元测试的重要性有人在GitHub不同语言的学习曲线图:LearningCurves(用于不同的编程语言)。尽管它有欺骗的趋势,但确实可以说明问题。这是发布的Python部分:此图说明了进行单元测试以提高Python生产率的重要性。这主要是因为Python是一种动态语言,通过静态编译检查无法发现许多问题,因此单元测试成为确保质量的一种重要手段。 OpenStack的核心项目对单元测试有很高的要求,以确保项目的高质量。单元测试工具有许多Python单元测试工具,它们为单元测试提供了不同的功能。 OpenStack项目基本上使用所有流行的单元测试工具。可以说,单元测试是OpenStack开发入门中比较难的部分,而且距离一公里以后。在本章中,我们将介绍将在OpenStack中使用的单元测试工具。由于数量众多,无法详细介绍,因此我主要介绍一些概念和用途。 unittest unittest是Python的标准库,提供基本的单元测试功能,包括单元测试运行器(简称runner)和单元测试框架。项目的单元测试代码的测试类可以继承unittest.TestCase类,以便运行者可以发现并执行该类。同时,unittest.TestCase类还定义了setUp(),tearDown(),setUpClass()和tearDownClass()方法,用于在单元测试和清理工作代码之前运行设置工作代码。经过单元测试。这也是所有Python代码都遵循的规范,因此第三方单元测试库和框架也遵循该规范。 Unittest库还提供了运行程序,可以使用$ python-munittesttest_module的命令执行模块的单元测试。另外,用于指定要在Python中运行的单元测试用例的完整语法为:path.to.your.module:ClassOfYourTest.test_method。 Unittest是学习Python单元测试的基础且重要的库。有关完整说明,请查看官方文档。 Mock mock也是另一个重要的单元测试库。它在Python2中用作第三方库。当涉及到Python3时,它已包含在标准库中,这表明了此库的重要性。简而言之,模仿用于模拟对象的行为,因此在进行单元测试时,您可以指定任何对象的返回值,这对于测试依赖于外部接口的代码非常方便。关于模拟的使用,您可以检查我之前编写的PythonMock条目。 Testtools testtools是unittest的扩展框架,主要在unittest的基础上提供更好的assert函数,从而使编写单元测试更加方便。您可以查看文档以了解详细信息。固定装置固定装置是指固定装置。在Python单元测试中,它指的是可以重用的单元测试setUp和tearDown代码的某种组合。夹具通常用于实现某个组件的设置和拆卸逻辑。例如,必须在测试之前创建一些数据,并且在测试之后必须删除这些数据。这些操作可以封装在固定装置中。这样,不同的测试用例无需重复编写这些代码,只需使用固定装置即可。灯具模块是第三方模块,它提供了一种用于创建灯具类和对象的简单机制,还提供了一些内置灯具。对于特定用法,请检查官方文档。 Testscenarios testscenarios模块满足方案的需求测试。它的基本用法是在测试类中添加一个类属性场景,这是一个元组,用于定义每个场景中不同变量的值。例如,如果测试一段数据访问代码,则需要测试当使用不同的驱动程序(例如MongoDB,SQL和File)时该代码是否可以正常工作。我们有三种方法:愚蠢的方法是为不同的驱动程序编写相同的测试用例3次。更好的方法是编写一个统一的非测试用例方法,接收驱动程序作为参数,执行测试逻辑,然后编写三个测试用例方法来调用此非测试用例方法。更好的方法是使用testscenarios模块,定义场景变量,然后实施测试案例方法。 Testscenarios模块在OpenStackCeilometer中被广泛使用。有关更多信息,请检查文档。 Subunit subunit是用于传输单元测试结果的流协议。一般来说,在运行单元测试时,单元测试的结果直接输出到标准输出,但是如果运行大量测试用例,则这些测试结果很难分析。因此,您可以使用python-subunit模块运行测试用例并通过子单元协议输出测试用例,以便可以通过分析工具汇总和分析测试结果。 python-subunit模块随附了一些工具来解析子单元协议。例如,您可以像这样运行测试用例:$ python-msubunit.runtest_module | subunit2pyunit,subunit2pyunit命令将解析子单元协议并将其输出到标准输出。有关子单元的更多信息,请检查官方文档。 Testrepository OpenStack使用testrepository模块来管理单元测试用例。当项目中有很多测试用例时,如何更有效地处理单元测试用例的结果就变得非常重要。 testrepository的出现就是为了解决这个问题。测试存储库使用python-subunit模块运行测试用例,然后分析该子单元的输出并记录测试结果(记录到本地文件中)。例如,testrepository允许您执行以下操作:知道长时间运行哪些用例显示失败的用例重新运行最后一个失败的用例有关testrepository的更多信息,请查看官方文档。 Coverage coverage用于计算运行时代码的覆盖率,即计算执行了多少代码。它可以与testrepository一起使用以计算单元测试的覆盖率,并在运行单元测试后输出覆盖率报告。对于特定用法,请检查官方文档。 Tox tox用于管理和构建虚拟环境(virtualenv)。对于一个项目,我们需要运行Python2.7的单元测试,Python3.4的单元测试以及PEP8的代码检查。这些不同的任务需要依赖于不同的库,因此需要使用不同的虚拟环境。使用tox时,我们将在tox配置文件tox.ini中指定不同任务的虚拟环境名称,需要在虚拟环境中安装该任务的软件包,以及在执行任务时运行哪些命令。有关更多信息,请检查官方文档。单元测试工具摘要本章介绍OpenStack中常用的单元测试工具的基本用法。希望大家对这些工具有一个大致的了解。在这里,我们可以按类别归纳这些工具:测试环境管理:tox使用tox来管理测试运行的虚拟环境,并调用testrepository执行测试用例。测试用例的操作和管理:测试存储库,子单元,覆盖率–测试存储库调用子单元来执行测试用例,聚合和管理测试结果,并调用覆盖率以执行代码覆盖率计算。准备测试用例:unittest,mock,testtools,fixtures,testcenarios使用testtools作为所有测试用例的基类,并使用嘲笑,fixtures,testcenarios更好地编写测试用例。在TheHacker39的sGuidetoPython(“ Python大师之路”)中,也有一章专门介绍了各种单元测试工具及其用法。读者也可以参考它。在下一章中,我们将分析Keystone项目的单元测试框架,让您了解如何在实际的OpenStack项目中使用这些工具。
扫描二维码关注我们
确 认