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

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

* 来源: * 作者: * 发表时间: 2020-06-04 0:19:04 * 浏览: 10
软件开发公司,本文将进入单元测试部分,这也是基础知识的后者。本文将重点介绍Python和OpenStack中单元测试的生态环境。学习OpenStack开发mdash,mdash,单元测试的重要性单元测试unittest单元测试mock testtools夹具testscenarios subunit testrepository coverage tox tox 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中,它已包含在标准库中,这表明了此库的重要性。简而言之,mock用于模拟对象的行为,以便在进行单元测试时,可以指定任何对象的返回值,这对于测试依赖于外部接口的代码非常方便。对于模拟的使用,您可以在我之前写的这篇文章中查看PythonMock的介绍。 Testtools testtools是unittest的扩展框架,主要在unittest的基础上提供更好的assert函数,这使得编写单元测试更加方便。您可以检查文档以了解详细信息。固定装置固定装置是指固定装置。在Python单元测试中,它是指setUp和tearDown代码的组合,可以在特定的单元测试中重用。夹具通常用于实现组件的设置和拆卸逻辑。例如,某些数据必须在测试之前创建,而这些数据必须在测试之后删除。这些操作可以封装到固定装置中。这样的不同测试用例无需重复编写这些代码,只需使用夹具即可。灯具模块是第三方模块,它提供了一种用于创建灯具类和对象的简单机制,还提供了一些内置灯具。您可以查看官方文档以了解具体用法。 Testscenarios testscenarios模块满足方案测试的需求。它的基本用法是在测试类中添加一个类属性方案,它是一个元组,用于定义每个方案中不同变量的值。例如,如果您测试一段数据访问代码,则需要测试是否使用不同的驱动程序(例如MongoDB,SQL和File)时,代码可以正常工作。我们有三种方法:更加愚蠢的方法是为不同的驱动程序编写相同的测试用例3次。更好的方法是编写一个统一的非测试用例方法,接收驱动程序作为参数,执行测试逻辑,然后分别编写三个测试用例方法以调用此非测试用例方法。更好的方法是使用testscenarios模块,定义场景变量,然后实施测试案例方法。 testscenarios模块在OpenStackCeilometer中被广泛使用。可以在文档中找到更多信息。子单元子单元是用于传输单元测试结果的流协议。一般而言,在运行单元测试时,单元测试的结果直接输出到标准输出,但是,如果您运行大量的测试用例,则很难对这些测试结果进行分析。因此,您可以使用python-subunit模块来运行测试用例,并通过子单元协议输出测试用例,以便可以通过分析工具汇总和分析测试结果。 python-subunit模块随附了一些用于解析子单元协议的工具。例如,您可以运行以下测试用例:$ python-msubunit.runtest_module | subunit2pyunit。 subunit2pyunit命令将解析子单元协议并将其输出到标准输出。有关子单元的更多信息,请检查官方文档。 Testrepository OpenStack使用testrepository模块来管理单元测试用例。当项目中有许多测试用例时,如何更有效地处理单元测试用例的结果就变得非常重要。 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执行测试用例。测试操作和管理:testrepository,subunit,coverage testpository子单元调用执行测试用例,聚合测试和管理的结果,call coverage执行计算代码coverage。测试用例编写:unittest,mock,testtools,fixtures,testcenarios将testtools用作所有测试用例的基类,并应用模拟,fixtures,testcenarios更好地编写测试用例。在TheHacker39的sGuidetoPython(“ Python主干道”)中,也有专门的章节介绍了各种单元测试工具及其用法,读者也可以参考。在下一章中,我们将分析Keystone项目的单元测试框架,这将使您了解在实际的OpenStack项目中如何使用这些工具。
扫描二维码关注我们
确 认