selenium学习笔记(二)单元测试框架:unittest

1.unittest框架入门

1.1 要测的代码

其实不用测试框架也是可以完成脚本的。举个例子:开发写了一段代码如下

#calculator.py
#整数的加法运算
class Count:
    #给类的实例变量赋初始值
    def __init__(self,a,b):
        self.a=int(a)
        self.b=int(b)
    #计算实例变量的和并返回
    def add(self):
        return self.a+self.b

1.2 不用框架的测试脚本

要测试上面这段代码,不用框架的话是这么写的:

#testcount.py
from calculator import Count
class TestCount:
    def test_add(self):
        try:
            c=Count(2,3)
            s=c.add()
            assert s==5,'test fail' #断言格式:assert 表达式,'报错信息',表达式如果不成立,则抛出异常错误,给出后面的报错信息,如果成立,则测试通过
        except AssertionError as msg:
            print(msg)
        else:
            print('test pass')
mytest=TestCount()
mytest.test_add()

可以看出来,不用测试框架的时候辅助代码会写的比较多,最主要的一个缺点是不同的人写出来的代码不一样,为了让我们的单元测试代码更容易维护和编写,所以才引入了单元测试框架。

1.3 使用单元测试框架写脚本

据我所知,python的单元测试框架有unittest、pytest等,这篇笔记以unittest为例。

#testcount1.py
import unittest
from calculator import Count
class TestCount(unittest.TestCase): #使用unittest写单元测试时,创建的单元测试用例的类必须继承unittest的TestCase类
    def setUp(self): #setUp()方法用于测试用例执行前的初始化工作
        print('test start')
    def tearDown(self): #tearDown()方法用于测试用例执行后的清理工作
        print('test end')
    def test_add(self): #使用unittest提供的assertEqual()方法对add的返回值进行断言
        c=Count(2,3)
        self.assertEqual(c.add(),5)

if __name__=='__main__':
    unittest.main() #unittest提供了main()方法,main()方法可以自己去搜索所有包含再当前模块的所有以test开头的测试方法,并自动执行它们。

注意:1.使用unittest组织的单元测试里,可以自动执行的方法有:setUp(),tearDown(),以test打头的方法,除此之外的其他方法不会自动执行。
2.运行有两种方式:一种是上面这种直接通过unittest.main()来加载所有的测试用例进行执行,还有一种是将所有的测试用例添加到测试套件中,然后执行。
Python语言编写的WebDriver测试脚本通常使用单元测试框架来运行,由此可以看出单元测试框架的主要是提供了:
(1)测试用例的组织与执行
(2)丰富的断言方法
(3)丰富的日志信息

1.4 unittest里的4个重要概念

(1)Test Case(测试用例)
测试用例指的是一个完整的测试流程,包括测试前的准备工作、测试过程即测试后的环境清理

(2)Test Suite(测试套件)
一个功能的验证往往需要多条测试用例,将许多的测试用例组织在一起执行,就产生了测试套件的概念。Test Suite可以用来组装单个的测试用例

(3)Test Runner(测试运行器)
一个Test Runner由执行设定的测试用例和将测试结果提供给用户两部分功能组成

(4)Test Fixture(测试固件)
一个Test Fixture代表一个或多个测试执行前的准备工作和测试结束后的清理工作

下面的栗子是将测试用例添加到测试套件中进行加载的示例:

import unittest
from calculator import Count
class TestCount(unittest.TestCase):
    def setUp(self):
        print('test start')
    def tearDown(self):
        print('test end')
    def test_add1(self):
        c=Count(2,3)
        self.assertEqual(c.add(),5)
    def test_add2

你可能感兴趣的:(单元测试,python)