python unittest 自动化测试完整案例

一、做自动化测试,简单来说4点
1.明确测试对象
2.编写测试用例
3.组织测试用例
4.执行测试用例输出测试结果报告
那么对于自动化框架来说,我们要做到的是,如何完成这些工作,具体对应到自动化框架unittest我们来大致介绍并使用下。

一、unittest工作原理

unittest最核心的四部分是:TestCase,TestSuite,TestRunner,TestFixture

TestCase:用户自定义的测试case的基类,编写测试case的类需要继承它

TestSuite:测试用例集合,可以通过addTest()方法手动增加Test Case,也可以通过TestLoader自动添加Test Case,TestLoader在添加用例时,会没有顺序。

TestRunner:运行测试用例的驱动类,可以执行TestCase,也可以执行TestSuite,执行后TestCase和TestSuite会自动管理TESTResult。

TestFixture:简单来说就是做一些测试过程中需要准备的东西,比如创建临时的数据库,文件和目录等,其中setUp()和setDown()是最常用的方法

总结来说,整个的流程就是首先要写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TestTestRunner来运行TestSuite,运行的结果保存在TextTestReusult中,整个过程集成在unittest.main模块中。

二、测试实例
1.创建一个待测试的mathFunc.py的python文件

def add(a,b):
    return a+b;
def minus(a,b):
    return a-b;
def multy(a,b):
    return a*b;
def divide(a,b):
    return a/b

2.创建一个测试用例的testMathFunc.py文件

import unittest
from mathfun import *
class testMathFunc(unittest.TestCase):
    def setUp(self):
        print("begin")
    def tearDown(self):
        print ("end")
    def test_add(self):
        self.assertEqual(3,add(1,2));
        self.assertNotEquals(4,add(2,3))
    def test_minus(self):
        self.assertEqual(0,minus(2,2))
    @unittest.skip("skip this method")
    def test_multy(self):
        self.assertEqual(4,multy(2,3))
    def test_divide(self):
        self.assertEqual(3,divide(9,3))
if __name__=="__main__":
    unittest.main()

用例执行结果如下:
python unittest 自动化测试完整案例_第1张图片

三.现在我们把测试结果用TestSuite组织起来,我们就要用到TestCase,添加到TestCaseDE中的case是会按照添加的顺序执行的。创建testSuite.py文件。


# -*- coding: UTF-8 -*-
import unittest
from test_mathfunc import  testMathFunc
from HTMLTestRunner import HTMLTestRunner

if __name__=='__main__':
    suite=unittest.TestSuite()
    # 方法1:这种方法可以对测试用例排序
    # tests = [TestMathFunc("test_add"), TestMathFunc("test_minus"), TestMathFunc("test_divide")]
    # suite.addTests(tests)


    #方法2:使用TestLoader的方法传入TestCase

    suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestMathFunc))

    with open("HTMLReport.html",'w') as f:
        runner=HTMLTestRunner(stream=f,verbosity=3,title=u"测试报告",description=u"加减乘除测试用例")
        runner.run(suite)

直接运行testSuite.py文件,输出测试结果报告如下:
python unittest 自动化测试完整案例_第2张图片

小结:

1、unittest是python自带的单元测试框架,可以直接import到自己的环境

2、unittest流程:写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,我们通过命令行或者unittest.main()执行时,main会调用TextTestRunner中的run来执行,或者我们可以直接通过TextTestRunner来执行用例。

3、想要被识别为测试用例,那么需要编写一个测试类,这个测试类要继承TestCase,类中的测试方法即单条测试用例都需要以test开头。

4、verbosity参数可以控制执行结果的输出:

0 (静默模式): 你只能获得总的测版试用例数和总的结果权 比如 总共100个 失败20 成功80
1 (默认模式): 非常类似静默模式 只是在每个成功的用例前面有个“.” 每个失败的用例前面有个 “F”
2 (详细模式):测试结果会显示每个测试用例的所有相关的信息*

5、可以通过addTest和addTests向suite中添加case或suite,可以用TestLoader的loadTestsFrom__()方法。

6、用 setUp()、tearDown()、setUpClass()以及 tearDownClass()可以在用例执行前布置环境,以及在用例执行后清理环境

7、我们可以通过skip,skipIf,skipUnless装饰器跳过某个case,或者用TestCase.skipTest方法。

你可能感兴趣的:(python自动化,python)