Python单元测试框架——unittest(python测试模块)

网友投稿 279 2022-06-23


一、Pyhon工作原理—— 核心概念:test case, testsuite, TestLoder,TextTestRunner,TextTestResult, test fixture

TestCase(测试用例): 所有测试用例的基类,它是软件 测试中最基本的组成单元。

一个test case就是一个测试用例,是一个完整的测试流程,包括测试前环境的搭建setUp,执行测试代码(run),以及测试后环境的还原(tearDown)。测试用例是一个完整的测试单元,可以对某一问题进行验证。

TestSuite(测试套件):多个测试用例test case集合就是TestSuite,TestSuite可以嵌套TestSuite。

TestLoder:是用来加载 TestCase到TestSuite中,其中有几个loadTestsFrom_()方法,就是从各个地方寻找TestCase,创建他们的实例,然后add到TestSuite中,再返回一个TestSuite实例。

TextTestRunner:是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。

TextTestResult:测试结果会保存到TextTestResult实例中,包括运行了多少用例,成功与失败多少等信息。

TestFixture:又叫测试脚手,测试代码的运行环境,指测试准备前和执行后要做的工作,包括setUp和tearDown方法。

二、测试流程:

1. 写好TestCase:一个class继承unittest.TestCase,就是一个测试测试用例,其中有多个以test开头的方法,那么 每一个这样的,在load的时候会生成一个TestCase实例。如果一个class中有四个test开头的方法,最后load到suite中时则有四个测试用例。

2. 由TestLoder加载TestCase到TestSuite。

3.然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中。

说明:

a:通过命令行或者unittest.main()执行时,main会调用TextTestRunner中的run来执行,或者可以直接通过TextTestRunner来执行用例。

b:Runner执行时,默认将结果输出到控制台,我们可以设置其输出到文件,在文件中查看 结果,也可以通过HTMLTestRunner将结果输出到HTML)。

三、unittest实例:

1.准备待测方法:

2. 为以上方法写测试:

执行结果:

这就是一个简单的测试,有几点需要说明的:

a:在第一行给出了每一个用例执行的结果的标识,成功是 .,失败是 F,出错是 E,跳过是 S。从上面也可以看出,测试的执行跟方法的顺序没有关系,test_divide写在了第4个,但是却是第2个执行的。

b:每个测试方法均以 test 开头,否则是不被unittest识别的。

c:在unittest.main()中加 verbosity 参数可以控制输出的错误报告的详细程度,默认是 1,如果设为 0,则不输出每一用例的执行结果,即没有上面的结果中的第1行;如果设为 2,则输出详细的执行结果

3.组织TestSuite

a:确定测试用例的顺序,哪个先执行哪个后执行?

b:如果测试文件有多个,怎么进行组织?

TestLoder加载TestCase几种方法:

4. 生成结果到文件:

5. test fixture——setUp(),tearDown()方法

setUp() 和 tearDown() 两个方法(其实是重写了TestCase的这两个方法),这两个方法在每个测试方法执行前以及执行后执行一次,setUp用来为测试准备环境,tearDown用来清理环境,已备之后的测试。

class TestMathFunc(unittest.TestCase):

# setUp 和 tearDown方法会在每个测试方法执行前及执行后执行一次,setUp用来为测试准备环境,tearDown用来清理环境已备之后的测试

def setUp(self):

print 'do something before test.prepare environment'

def tearDown(self):

print 'do something after test.clean up'

  如果想要在所有case执行之前准备一次环境,并在所有case执行结束之后再清理环境,我们可以用 setUpClass() 与tearDownClass():

class TestMathFuncTwo(unittest.TestCase):

#如果想要在所有case执行之前准备一次环境,并在所有case执行结束后再清理环境,我们可以用setUpClass()与tearDownClass(),注意:@classmethod必须加,否则报错

@classmethod

def setUpClass(cls):

print 'This setUpClass() method only called once'

@classmethod

def tearDownClass(cls):

print 'This tearDownClass() method only called once too'

6. 跳过某个case

7. 用HTMLTestRunner输出HTML报告

HTMLTestRunner是一个第三方的unittest HTML报告库,首先我们下载HTMLTestRunner.py,并放到当前目录下,或者你的’#:\Python\Lib’下,就可以导入运行了

ps:本文有部分内容摘自网络,链接:http://blog.csdn.net/huilan_same/article/details/52944782


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python PIL Image图片显示系列(python123平台登录)
下一篇:使用Outlook对象筛选的_Items.Restrict方法时,“不支持使用like的模糊查询”
相关文章

 发表评论

暂时没有评论,来抢沙发吧~