全国服务热线:
0592-5794349
当前位置:首页> 新闻中心

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

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