最新IPMITOOL自动化测试参考手册

上传人:shi****gbu 文档编号:43791828 上传时间:2021-12-04 格式:DOC 页数:12 大小:504KB
返回 下载 相关 举报
最新IPMITOOL自动化测试参考手册_第1页
第1页 / 共12页
最新IPMITOOL自动化测试参考手册_第2页
第2页 / 共12页
最新IPMITOOL自动化测试参考手册_第3页
第3页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
学习 好资料 更多精品文档 IPMITOOL 自动化测试 一 . 系统环境: ubuntu 15.04 . 2. 二 . 准备工作 . 2. 1. 在 ubuntu 上安装 python 2.7 . 2. 2. yaml 文件夹, IPMI_automation . py,IPMI_data.yaml,ipmitools 需要放置在同一目录下 . 3. 三. 测试 ipmitool 3. 四. 单元测试补充内容 . 1.学习-好资料 更多精品文档 .系统环境:ubuntu 15.04 .准备工作: 在 ubuntu 上安装 python 2.7 在 ubuntu linux 的发布版本中有预先安装好的 python,可按照如下步骤安装 pytho n 2.7。 在边条上选择“ unbuntu 软件中心”,它看上去像一个橘色的袋子,如果你没 有看到它,可以点击“ Dash 主页”图标,然后在对话框中输入 Software; 在软件中心右上角的搜索框中输入 Python ; A* Lyfttli iBi Oii.rbuE*d LuMbiM *2i. 11 W:iPfritJ DedniEent ErwiEfrerit Py村 cn fwanf Python-J 41 DLL J * * * * * !JI Wtrflrited OtwrljMmpil EnvTWii*nt & PthwiJ Qtcsnsele 轉 ”. InUiM IHCPMDW hOTi UAAMh3)在出现的软件列表中选择 Python 2.7,并点击安装1. 1) o ( (1 Alt 学习-好资料 更多精品文档 yaml 文件夹,IPMI_automation.py, IPMI_data.yam, ipmitools 需要放置在 同一目录下: 一 一 ipmitools 可以通过 shell 命令来进行安装:apt-get in stall ipmitool ; ipmitools 可以通过 shell 命令来获取安装路径: whereis ipmitool ; rjry-pu teuintu- tpriltocil; /msbln#iLRt.t仪DI r/5hdirc/ipnitael /mr/stiflrr/Hain/nwil/tpnitDCl.l.g* jfghJbMHlU: -S I 三.测试 ipmitool: 测试步骤如下: 1)将需要测试的 ipmitool comma nd 作为 Parmeters 写进 IPMI_data.yaml,每条 命令对应的 Returncode 一律写成 0 (0 代表该条命令执行成功);2. 1) 2) 学习-好资料 更多精品文档 - KrwtmE 匸 s i IwipliJt -H -u UKHW MEMI HC info* 2) 修改好 IPMI_data.yaml 后保存并关闭,打开 python 2.7 ,打开 IPMI_automatio n.py: 3)运行该自动化测试脚本:iifArAiCtr-i: Re-tnrncodc: ParvMtr rt: Panw-ters: ftttvrAC: PdrAe-teri: ftalwrnc.44tj VfttwrficiiMlcj Ibt-lvrri4i4v: Par ne tert: tetiirflCQdf Xnr* re info-* tnfn 10 tl*n I? A ttOHE -ll U5E4TD -P PASSNSfiO -U 05 EH ID -P PAS5WAD -H 10.244.LBS-Bl -U UISEE13D -P PASSWORD -L lam -M U.244-19B.ftl -U U5EAID -P PASiND )4 249. UtRIfr -P PSSWRD I Unpl VS -H 旳 p PASSED 飢2轉9飢n I l-anLus H 1*4 K4k LW丄 USSR 血-P PASiMMD I lnplui m R-A I Vt LF&ERI& FMSJMAP I 2 峠l昭-H Ptrfw-lvrii 血垄页 -b *4s4ei b 3Q t4f I *X E I NU HTllL B A ”:L B J ii.ii jrdrilfevif ailBiiHtie-r 11*1 .pM E=.JltaT p cmfifen t M Zl | 学习-好资料 更多精品文档 窗口中打印的结果中,如果 Expected returncode=Excecute returncode=0 则代表 该条命令执行成功,否则代表执行失败;同时程序运行完毕后会在同一目录下生 成两个日志,一个详细日志,一个样例日志: 曲 ItfgJhi Q nopOfFEMh G 掬皿曲 i*廿粥 * ffi 0 ftr( (?wwl*Cwrk C Cjonmzt to &VH- 4)打开详细日志日志如下,可以检查 shell 具体的返回结果: ipmitDol Wxtcip 0 O HQfTi# thnktop 0 Dccunienfix 石 Oowrdoai 曲 Music O chx 单血瓠l倔 I PM I ALtomaticwk 酬ffi|3上沁二啊 PMl_dAti-ysnil PHI data 1S921C IRMI dLai I51IZW 1 1阳孙丄品曲弟孑 sdBr 3_ ydrfnl 学习-好资料 更多精品文档 5)打开样例日志,可以检查每条命令是否 pass,总体 pass 多少命令,fail 多少 命令: s;ipHxrmrHV rw metro 四申电 wwi RESULT: FAIL .订 lanlux * jn.fll U 肆ID P PASSMRO rw 曲馳 0询5 旅 4x 旳2 加篦 审 K 酣 RE54JLT; . PA55 ./tpnxtwl “ liHClui H 谊山戢hl觑上 1 山 USLRIQ P P略列那ID ClhBfltl i Ucy IwyMi RESULT: . - - - PASS ./ipnvtwl !I lnplijs -H M4S1 U ySERIQi P PASSMORO cMs-sts ppKcy off RE54JLT- * PA55 ,/UHLtWl I “Ml 科科 lP240,191.11 U 咋 MID P P 隔曲隔曲 RD CM I St!皿讥硼 pr t9US ItESUlT:,唧IPASS ./Ipnktwl I UHUS -H 1 趴剖趴 U ySEftlO p P&SSWR0 rw *KM 恤牝 斡坷 RESULTS r . . FA55 ”八QiutMl 1 lariluE H io.ieAH.11 u USLRID P chmti r*nirt_c4uit RESULT: . . . . . P略$ + 1 lenpW* -H 1 和#轉-Iffl/l U UStRtD f PA注腐帥 沾忖 bxtd fi( (t R%ILT! * ! ip REWLT* -* PASS * * * * *APi s unnay 鮭ItifPASSED tAC : Hl fieturn cod# FAILED test z “ 四.单元测试补充内容: 单元测试的重要性就不多说了,可恶的是 python 中有太多的单元测试框架和 工具,什么 unittest, testtools, subunit, coverage, testrepository, nose, mox, mock, fixtures, discover ,再加上 setuptools, distutils 等等这些,先不说如何写单元测试,光是怎么运行单元测试就有 N 多种方法, 再因为它是测试而非功能,是很多人没兴趣触及的东西。但是作为一个优秀 的程 IPMLdBt*a151Z06J MJ沖肅秋刚口讯 卜宓乂 1膚 霆杵具1 - Qedil 裔 op*j* - Zrt 昌 g k 细決 锄训:也c /tpRttwl -h W: igt仙 1 acanAtridfe- 11 -P imf p rt u K-rrune file s tze :b:: S ChflT Cliptiff liilt* 时 fi#n_key l用I fiasEiwof This MLp SIM * C4l rile furEOM 501 c che 屮If* rh trlial rctcr Clpllff fut Et t* X Q$* * l 肌npl即暫 lAttf f4C* UN M Tor IPnivJ autheticattsni Uie h#Nadte Ina l - B4Kod*d 叩 ke far I Rlvi JiutMnlUiLiLEM Rcmte ses xin pr IvilegiE- le-wel def Mil t -ADH| NTSTMTQH Append a 1 +B t口 use nwe/piirlvlLie号良 lookuip tn RAKP1 rct UK f 酣th tyt WhiE,起弱bon趴 2B 脂y “ CHEH Se*ot* s Elan pwrd 呂屯屈 EH5*呻g1弟 廿酥 1吋1 口 建电 *1PMI_data_1S I2ttt5_19D7D7_detJ RnClRP蘇强側魄t 1 Enp CI 弭 J 0 学习-好资料 更多精品文档 序员,不仅要写好功能代码,写好测试代码一样的彰显你的实力。如此 多的框架和工具,很容易让人困惑,困惑的原因是因为并没有理解它的基本 原理,如果一些基本的概念都不清楚,怎么能够写出思路清晰的测试代码? 今天的主题就是 unittest ,作为标准 python 中的一个模块,是其它框架和 工具的基础,参考资料是它的官方文档: http:/docs.python.org/2.7/library/unittest.html 和源代码,文档已经 写的非常好了,我在这里记录的主要是它的一些重要概念、关键点以及可能 会碰到的一些坑,目的在于对 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 suite, test runner,我觉得只有理解了这几个概念,才能真正的理解 单元测试的基本原理,下面就主要围绕这几个概念来展开这篇文章。 首先通过查看 unittest 的源码,来看一下这几个概念,以及他们之间的关系, 他们是如何在一起工作的,其静态类图如下:学习-好资料 更多精品文档 result C ptFPS dt 一个 TestCase 的实例就是一个测试用例。什么是测试用例呢?就是一个 完整的测试流程,包括测试前准备环境的搭建 (setup),执行测试代 码 (run),以及测试后环境的还原(tearDown)。元测试(unit test)的本质也 就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元, 可以对某一个问题进行验证。 *而多个测试用例集合在一起,就是 TestSuite,而且 TestSuite 也可以嵌 套 TestSuite 。 * TestLoader是用来加载TestCase到TestSuite 中的, 其中有几个 loadTestsFrom_()方法,就是从各个地方寻找 TestCase,创建它们的实 例,然后 add 到 TestSuite中,再返回一个 TestSuite 实例。 * TextTestRu nn er 是来执行测试用例的,其中的 run (test) 会执行 TestSuite/TestCase 中的 run (result)方法。 测试的结果会保存到 TextTestResult 实例中,包括运行了多少测试用例, 成功了多少,失败了多少等信息。 这样整个流程就清楚了,首先是要写好 TestCase,然后由 TestLoader 加载 TestCase 到 TestSuite,然后由 TextTestRunner 来运行 TestSuite,运行的结 果保存在TextTestResult 中,整个过程集成在 unittest.main 模块中。 ( (C) )IflGtloadar testMethedP匕击只二 Test5uite leadTE-stsF-omTestcase(testEasec asssi dis-zoer C)TeMS-ull S?lf. ttS=J| runlresult) 划 仃 C jTetCaac ts-arCawriJ run(raault) runner C ToHtRstRocult ruTi(test) T aKtTGstRurns 学习-好资料 更多精品文档 现在已经涉及到了 test case, test suite, test runner 这三个概念了,还有 test fixture 没有提到,那什么是 test fixture 呢?在 TestCase 的 docstring 中有这样一段话: Test authors should subclass TestCase for their own tests- Cons true riixi and deems true don of itie tesfs anvironmant fixture1) can be implemented by oveirridlrig th右 atLlp* and tGarDown1 methods respective!/ 可见,对一个测试用例环境的搭建和销毁, 是一个 fixture ,通过覆盖 TestCase 的 setUp()和 tearDown()方法来实现。这个有什么用呢?比如说在这个测试用 例中需要访问数据库,那么可以在 setUp()中建立数据库连接以及进行一些初始 化,在 tearDown()中清除在数据库中产生的数据, 然后关闭连接。 注意 tearDown 的过程很重要, 要为以后的 TestCase留下一个干净的环境。关于 fixture ,还 有一个专门的库函数叫做 fixtures ,功能更加强大。 至此,概念和流程基本清楚了,下面通过简单的例子再来实践一下,就拿 uni ttest 文档上的例子吧:学习-好资料 更多精品文档 iniport random imp ort Liri tt es t class TestSequericeFunct ionstunittest nTe itCase): def ietup(sei*): jel-F*seq range(10 def test-Shufflefsei-): 斗 make sure the shuffled sequence does not lose dny tlements randomhshuffLe(s) sei-.seq.sort() 1- T asser-) 斗 hould 日n except ion for 目n iimiut sequence 土已.assertRaises (Typ&Er ror, randtjm.shufflej 2 , J) def te5t_choiceCs亡尸); clement = random.chol亡 E(匸亡1 .s&q) s(1 .assert!rue(element in 匚皀IF*空芒q) def te5t_5ample(3elx): id h .j as&e广七Raise&(ValutError): randomsamp1e(-gifseqj 29) for elemerit tn randam.sample eIf 5): j.zl .assertTrue(el亡in亡nt in 亡丄亠-刍亡q) H- name = 1 m 冃 in - nittest. ihain() 学习-好资料 更多精品文档 TestSequenceFunctions 继承自 unittest.TestCase ,重写了 setUp()方法,并 且定义了三个以test 开头的方法,那这个 TestSequenceFunctions 类到底是 个什么呢?它是一个测试用例,还是三个测试用例?说是三个测试用例的话, 它 本身继 承自 TestCase,说是一个测试用例的话,里面又有三个 test_*()方法, 明显是三个测试用例。其实,我们只要看一些 TestLoader 是如何力卩载测试用例 的,就一清二楚了,在 loader.TestLoader 类中有一个 loadTestsFromTestCase() 方法:学习-好资料 更多精品文档 de-F loadTestsFromlestCase1 t*st匚百去弓: ,rRetxirrii 3 suite p-F all 七ests ces ccn七豆intd in test匚弓吕亡匚LAWS if isiubclass(tes.tCa5eClas.tsuite.TastSuite): raise TypeErrorfTest cases should not be derived from TestSuite*H X Maybe ycm meant to derive -frcm 1己=七匸日0己) t es+CasebUfnes * . el , get Test Case Marne s (testCas eClass) not tes t 匚 and hiasattCtestCaseClasSj run Test): test匚白吿亡N日皿亡左=* runTest loaded_sjite - -1 .suite匸日口亡匚lows testCaseNames) Q 已turn Loaded suite getTestCaseNames()是从 TestCase 这个类中找所有以“test ”开头的方法,然 后注意第9 行,在构造 TestSuite 对象时,其参数使用了一个 map 方法,即对 testCaseNames 中的每一个元素,使用 testCaseClass 为其构造对象,其结果是 一个 TestCase 的对象集合,可以用下面的代码来分步说明: testcases =【1 or nere in testCaeriarei: test,a c &.stppend(T CCJ (nane) Ioad d uLt0 B 1 r Lldt BCl M .(tU E ) 可见,对每一个以 test 开头的方法,都为其构建了一个 TestCase 对象,值得注 意的是,如果没有定义 test 开头的方法,而是将 测试代码写到了一个名为 run Test 的方法中,那么会为该 run Test 方法构建 TestCase 对象,如果定义了 test 开头的方法,就会忽略 run Test方法。 至此,基本就清楚了,每一个以 test 开头的方法,都会为其构建 TestCase 对象, 也就是说TestSequenceFunctions 类中其实定义了三个 TestCase,之所以写成 这样,是为了方便,因为这几个测试用例的 fixture 是相同的,如果每一个测试 用例单独写成一个 TestCase 的话,会有很多的冗余代码。 明白了这些,文档就可以很轻松的看懂了,至于怎么运行测试用例,以及其他的 内容,直接看文档吧。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!