UI自动化:单元测试框架

unittest 被称作Python版本的JUnit,或称PyUnit。

 

unittest的重要4个概念:

1.test fixture 测试固件

2.test case 测试用例

3.test suite 测试套件:就是一组测试用例

4.test runner 测试运行器

 

一、测试用例

  unittest框架通过TestCase类来构建测试用例,并要求所有自定义的测试类都必须继承该类,它是所有测试用例的基类,传入一个方法名,将返回一个测试用例实例。 

  TestCase 的子类中实现测试用例的代码既可以单独运行,也可以和其他测试用例构成测试用例集,然后批量执行

  TestCase子类从父类继承的几个特殊的方法,在测试用例执行时均会被定义执行:

   1.setUp() ,测试前的初始化工作

   2.tearDown(),测试后的清理工作

   3.setUpClass(),在setUp()函数之前,只支持一次,必须使用@classmethod装饰器进行修饰

   4.tearDownClass()

 

  注意:采用上述动态,需要被执行的测试方法都必须以“test”开头

 

二、按照特定顺序执行测试用例集合

  被测代码文件 Calc.py

  #coding = utf -8

  class Calc(Object):

    def  sub(self,x,y,*d)

    #减法计算

    result = x -y

    for i in d:

      result -=i

 

  测试代码文件test.py

  #coding = utf -8

  import unittest

  from Calc import Calc

  class MyTest(unittest.TestCase):

    @Classmethod

    def setupClass(cals):

      cals.c = Calc()

    def test_sub(self):

      self.assertEqual(MyTest.c.sub(1,2,3),-4,'test sub fail')

  if __name__ == '_main_':

    unittest.main()  #启动

 

..................

  对最后启动进行修改,指定顺序:

  

  if __name__ == '_main_':

    suite = unittest.TestSuite()

    sutie.addTest(Mytest("test_sub")) #添加到测试容器中

    runner = unittest.TextTestRunner()

    runner.run(suite)

 

三、常见的unittest注释方法

  1.@unittest.skip("skipping") #无条件忽视该测试方法

  2.@unittest.skipIf(a>5,''condition is not satisfied'') #如果变量a>5,则忽略该测试方法

  3.@unittest.skipUnless()

 

四、unittest命令执行

  1.模块执行命令

    python -m unittest  -v Mytest  #MyTest为模块,-v参数表示输出测试用例执行的详细信息

  2.执行模块中的某个类

    python -m unittest -v  test_modue.TestClass

  3.批量执行测试模块(main中加载)

    if __name__ =='__main__'

      #当前目录下所有有效的测试模块,“.”表示当前目录,可以用绝对路径

      testSuite = unittest.TestLoader().discover('.')

      unittest.TextRunner(verbosity=2).run(testSuite)

 

    命令方式为:D:\xxxx\python -m unittest discover  [注意脚本目录]

    

 

    

 

  

posted on 2018-09-17 10:45  释放自我-建立真我-追求无我  阅读(193)  评论(0编辑  收藏  举报

导航