一、unittest工作原理
unittest最核心的四部分是:TestCase,TestSuite,TestRunner,TestFixture
TestCase:用户自定义的测试case的基类,调用run()方法,会依次调用setUp方法、执行用例的方法、tearDown方法。
TestSuite:测试用例集合,可以通过addTest()方法手动增加Test Case,也可以通过TestLoader自动添加Test Case,TestLoader在添加用例时,会没有顺序。
TestRunner:运行测试用例的驱动类,可以执行TestCase,也可以执行TestSuite,执行后TestCase和TestSuite会自动管理TESTResult。
TestFixture:简单来说就是做一些测试过程中需要准备的东西,比如创建临时的数据库,文件和目录等,其中setUp()和setDown()是最常用的方法
整个的流程就是首先要写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestReusult中,整个过程集成在unittest.main模块中。
二、例子如下:
1、创建一个函数集
mathfunc.py
2、接下来是为这些方法写的一个测试:
TestMathFunc.py
3、组织TestSuite
上面的代码演示了如何编写一个简单的测试,下面说一下怎么控制用例执行的顺序。我们就要用到TestCase,添加到TestCaseDE中的case是会按照添加的顺序执行的。
来个例子:
3.1 在文件夹中再新建一个文件。testSuite.py
执行情况跟我们预料的一样,执行了三个case,并且顺序是按照我们添加进去suite的顺序执行的:
3.2 修改test_suite.py
执行此文件,可以看到,在同目录下生成了一个html文件,也可以把测试结果以txt的格式输出。
执行结果如下:
在网页中打开测试报告:
测试报告以txt格式输出:
小结:
1、unittest是python自带的单元测试框架,可以用来作为我们自动化测试框架的用例组织执行框架。
2、unittest流程:写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,我们通过命令行或者unittest.main()执行时,main会调用TextTestRunner中的run来执行,或者我们可以直接通过TextTestRunner来执行用例。
3、一个class继承unittest.TestCase即是一个TestCase,其中以 test 开头的方法在load时被加载为一个真正的TestCase。
4、verbosity参数可以控制执行结果的输出,0 是简单报告、1 是一般报告、2 是详细报告。
5、可以通过addTest和addTests向suite中添加case或suite,可以用TestLoader的loadTestsFrom__()方法。
6、用 setUp()、tearDown()、setUpClass()以及 tearDownClass()可以在用例执行前布置环境,以及在用例执行后清理环境
7、我们可以通过skip,skipIf,skipUnless装饰器跳过某个case,或者用TestCase.skipTest方法。
8、参数中加stream,可以将报告输出到文件:可以用TextTestRunner输出txt报告,以及可以用HTMLTestRunner输出html报告。
转载自:https://blog.csdn.net/heye13/article/details/81627538