python自动化测试框架从基础到完成博客,基于python的界面自动化测试
一、单元测试工作原理
单元测试最核心的四部分是:测试用例、测试套件、测试运行器、测试夹具
测试案例:用户自定义的测试情况的基类,调用运行()方法,会依次调用设置方法、执行用例的方法、拆卸方法。
测试套件:测试用例集合,可以通过addTest()方法手动增加测试用例,也可以通过测试加载器自动添加测试用例,测试加载器在添加用例时,会没有顺序。
TestRunner:运行测试用例的驱动类,可以执行测试用例,也可以执行测试套件,执行后测试案例和测试集会自动管理测试结果。
测试夹具:简单来说就是做一些测试过程中需要准备的东西,比如创建临时的数据库,文件和目录等,其中设置()和设置()是最常用的方法
整个的流程就是首先要写好测试用例,然后由测试加载器加载测试案例到测试套件,然后由TestTestRunner来运行测试套件,运行的结果保存在文本测试结果中,整个过程集成在单元测试。主要的模块中。
二、例子如下:
创建一个函数集mathfunc.pyc
def add(a,b):返回bdef减去(a,b):返回a-bdef多(a,b):返回a*bdef除(a,b):返回a/b接下来是为这些方法写的一个测试:
test_mathfunc.py
# -*-编码:utf-8-*-从数学函数导入单元测试导入*类测试数学函数(单元测试.测试用例):定义设置(自身):打印在测试前做些什么,准备环境定义拆卸(自身):打印在测试后做些什么。清理def test _ add(self):self。assertequal(3,add(1,2)) self.assertNotEqual(3,add(2,2)) @unittest.skip(我不想运行这个案例)def test _ MINUS(self):self。assertequal(1,minus(3,2))def test _ multi(self):self。assertequal(6,multi(2,3))def test _ divide(self):self。assertequal(2,divide(6,3)) self。执行结果如下:
组织测试集
上面的代码演示了如何编写一个简单的测试,下面说一下怎么控制用例执行的顺序。我们就要用到测试用例,添加到TestCaseDE中的情况是会按照添加的顺序执行的。
来个例子:
在文件夹中再新建一个文件。test_suite.py
# -*-编码:utf-8-*-import unittest from test _ math func import TestMathFuncif _ _ name _ _= _ _ main _ _ :suite=unittest .测试套件()tests=[测试数学函数( test _ add ),测试数学函数( test_minus ),测试数学函数( test _ divide )]套件。添加测试(tests)runner=单元测试.TextTestRunner(verbosity=2)runner。运行(套件)执行情况跟我们预料的一样,执行了三个案件,并且顺序是按照我们添加进去套房的顺序执行的。
将结果输出到文件中
修改测试套件。巴拉圭
# -*-编码:UTF 8-*-从test_mathfunc导入单元测试数学函数从乱码导入HTMLTestRunnerif _ _ name _ _= _ _ main _ _ :suite=unittest .测试套件()#使用这种方法可以对测试用例排序#tests=[TestMathFunc(test_add ),TestMathFunc(test_minus ),test math func( test _ divide )]# suite。添加测试(测试)#使用测试加载器的方法传入测试用例套件。添加测试(单元测试.TestLoader().loadTestsFromTestCase(TestMathFunc))#在同目录下生成文本文件(文本文件)格式的测试报告# with open( unittesttextreport。txt , a )作为f: #runner=unittest .TextTestRunner(stream=f,verbosity=2)# runner。运行(套件)时打开( html报告。html , w )as f:runner=HTMLTestRunner(stream=f,title=u 测试报告,description=u 测试用例的执行情况,详细度=2 ) runner.run(套件)执行此文件,可以看到,在同目录下生成了一个文本文件(文本文件)文件;也可以把测试结果以超文本标记语言的格式输出到页面上。
执行结果如下:
在网页中打开测试报告:
小结:
1.unittest是python自己的单元测试框架,可以作为我们自动化测试框架的用例组织和执行框架。
2.unittest流程:编写测试用例,然后由TestLoader将测试用例加载到TestSuite中,再由TextTestRunner运行TestSuite。运行结果保存在TextTestResult中。当我们通过命令行或者unittest.main()执行它时,main会调用TextTestRunner中的run来执行它,或者我们可以通过TextTestRunner直接执行用例。
3.一个类继承了unittest。TestCase是一个测试用例,其中以test开头的方法在加载过程中作为真实的测试用例加载。
4.verbosity参数可以控制执行结果的输出。0是简单报告,1是一般报告,2是详细报告。
5.可以通过addTest和addTests将case或suite添加到suite中,可以使用TestLoader的loadTestsFrom__()方法。
6.setUp()、tearDown()、setUpClass()和tearDownClass()可用于用例执行前的环境整理和用例执行后的环境清理。
7.我们可以通过skip、skipIf、skipUnless decorator或者使用TestCase.skipTest方法跳过一个案例。
8.在参数中加入stream,就可以将报表输出到一个文件中:可以用TextTestRunner输出txt报表,用htmlTestRunner输出HTML报表。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。