版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、IPMITOOL自动化测试一. 系统环境:ubuntu 15.042二. 准备工作21. 在ubuntu上安装python 2.722. yaml文件夹,IPMI_automation.py,IPMI_data.yaml,ipmitools需要放置在同一目录下3三. 测试ipmitool3四. 单元测试补充内容1一. 系统环境:ubuntu 15.04二. 准备工作:1. 在ubuntu上安装python 2.7在ubuntu linux的发布版本中有预先安装好的python,可按照如下步骤安装python 2.7。1) 在边条上选择“unbuntu软件中心”,它看上去像一个橘色的袋子,如果你
2、没有看到它,可以点击“Dash主页”图标,然后在对话框中输入Software;2) 在软件中心右上角的搜索框中输入Python;3) 在出现的软件列表中选择Python 2.7,并点击安装。2. yaml文件夹,IPMI_automation.py,IPMI_data.yaml,ipmitools需要放置在同一目录下:1) ipmitools可以通过shell命令来进行安装:apt-get install ipmitool;2) ipmitools可以通过shell命令来获取安装路径:whereis ipmitool;3) 按照ipmitools的所在路径找到ipmitools相关文件,拷贝相
3、关文件,放置与yaml文件夹,IPMI_automation.py,IPMI_data.yaml同一目录下即可。三. 测试ipmitool:测试步骤如下:1) 将需要测试的ipmitool command 作为Parmeters写进IPMI_data.yaml,每条命令对应的Returncode一律写成0(0代表该条命令执行成功);2) 修改好IPMI_data.yaml后保存并关闭,打开python 2.7,打开IPMI_automation.py:3) 运行该自动化测试脚本:窗口中打印的结果中,如果Expected returncode=Excecute returncode=0,则代表该
4、条命令执行成功,否则代表执行失败;同时程序运行完毕后会在同一目录下生成两个日志,一个详细日志,一个样例日志:4) 打开详细日志日志如下,可以检查shell具体的返回结果:5) 打开样例日志,可以检查每条命令是否pass,总体pass多少命令,fail多少命令:四. 单元测试补充内容:单元测试的重要性就不多说了,可恶的是python中有太多的单元测试框架和工具,什么unittest, testtools, subunit, coverage, testrepository, nose, mox, mock, fixtures, discover,再加上setuptools, distutils等
5、等这些,先不说如何写单元测试,光是怎么运行单元测试就有N多种方法,再因为它是测试而非功能,是很多人没兴趣触及的东西。但是作为 一个优秀的程序员,不仅要写好功能代码,写好测试代码一样的彰显你的实力。如此多的框架和工具,很容易让人困惑,困惑的原因是因为并没有理解它的基本原理,如果一些基本的概念都不清楚,怎么能够写出思路清晰的测试代码?今天的主题就是unittest,作为标准python中的一个模块,是其它框架和工具的基础,参考资料是它的官方文档:/2.7/library/unittest.html和源代码,文档已经写的非常好了,我在这里记录的主要是它的一些
6、重要概念、关键点以及可能会碰到的一些坑,目的在于对unittest加深理解,而不是停留在泛泛的表面层上。unittest是一个python版本的junit,junit是java中的单元测试框架,对java的单元测试,有一句话很贴切:Keep the bar green,相信使用eclipse写过java单元测试的都心领神会。unittest实现了很多junit中的概念,比如我们非常熟悉的test case, test suite等,总之,原理都是相通的,只是用不同的语言表达出来。在开始就介绍了unittest中的4个重要的概念:test fixture, test case, test sui
7、te, test runner,我觉得只有理解了这几个概念,才能真正的理解单元测试的基本原理,下面就主要围绕这几个概念来展开这篇文章。首先通过查看unittest的源码,来看一下这几个概念,以及他们之间的关系,他们是如何在一起工作的,其静态类图如下:· 一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代 码(run),以及测试后环境的还原(tearDown)。元测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。·
8、而多个测试用例集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite。· TestLoader是用来加载TestCase到TestSuite中的,其中有几个loadTestsFrom_()方法,就是从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例。· TextTestRunner是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。· 测试的结果会保存到TextTestResult实例中,包括运行了多少测
9、试用例,成功了多少,失败了多少等信息。这样整个流程就清楚了,首先是要写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由 TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,整个过程集成在unittest.main模 块中。现在已经涉及到了test case, test suite, test runner这三个概念了,还有test fixture没有提到,那什么是test fixture呢?在TestCase的docstring中有这样一段话:可见,对一个测试用例环境的搭建和销毁,是一个fixtur
10、e,通过覆盖TestCase的setUp()和tearDown()方法 来实现。这个有什么用呢?比如说在这个测试用例中需要访问数据库,那么可以在setUp()中建立数据库连接以及进行一些初始化,在tearDown() 中清除在数据库中产生的数据,然后关闭连接。注意tearDown的过程很重要,要为以后的TestCase留下一个干净的环境。关于fixture,还有一个专门的库函数叫做fixtures,功能更加强大。至此,概念和流程基本清楚了,下面通过简单的例子再来实践一下,就拿unittest文档上的例子吧:TestSequenceFunctions继承自unittest.TestCase,重写
11、了setUp()方法,并且定义了三个以'test' 开头的方法,那这个TestSequenceFunctions类到底是个什么呢?它是一个测试用例,还是三个测试用例?说是三个测试用例的话,它本身继 承自TestCase,说是一个测试用例的话,里面又有三个test_*()方法,明显是三个测试用例。其实,我们只要看一些TestLoader是如何 加载测试用例的,就一清二楚了,在loader.TestLoader类中有一个loadTestsFromTestCase()方法: getTestCaseNames()是从TestCase这个类中找所有以“test”开头的方法,然后注意第9行,在构造TestSuite对 象时,其参数使用了一个map方法,即对testCaseNames中的每一个元素,使用testCaseClass为其构造对象,其结果是一个 TestCase的对象集合,可以用下面的代码来分步说明:可见,对每一个以test开头的方法,都为其构建了一个TestCase对象,值得注意的是,如果没有定义test开头的方法,而是将 测试代码写到了一个名为runTest的方法中,那么会为该runTest方法构建TestCase对象,如果定义了test开头的方法,就会忽略 runTest方法。至此,基本就清楚了,每一个以test开头的方法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2022-2023学年江苏省淮安市二年级下学期数学月考试题及答案
- 2024年文化产业园区招商合同范本3篇
- 2021年浙江省台州市三门县六年级下册期末语文试卷及答案
- 2021-2022学年广东省广州市番禺区部编版小学三年级上册语文期末试题及答案
- 2021-2022学年浙江省杭州市淳安县小学二年级下册数学期末试题及答案
- 海地课程设计教程
- 2024年新世纪版八年级生物下册月考试卷687
- 2024年度面料产品产业链采购合同范本3篇
- 本科 课程设计
- 2022-2023学年江苏省扬州市邗江区一年级上册数学期末试题及答案
- 库区倒罐作业操作规程
- 幕墙计算表格(自动版)
- 未婚声明(最新版)
- 中考作文一材多用写作指导课件
- 现代操作系统教程(慕课版)-课后习题答案1-8章全带原题
- PCS-PC简单使用方法
- 高校人力资源管理系统
- 关于更换公务用车的请示
- 国外发达国家中水回用现状
- 远洋渔船项目可行性研究报告模板
- 塔塔里尼调压器FLBM5介绍.ppt
评论
0/150
提交评论