单元测试框架unittest-1

1.unittest简述

unittest是Python语言的单元测试框架。
unittest单元测试框架提供了创建测试用例、测试套件和批量执行测试用例的方案。利用单元测试框架,可以创建一个类,该类继承unittest的TestCase,这样可以把每个TestCase看成是一个最小单元,由测试套件组织起来运行时直接执行即可,同时可以引入测试报告。

2.测试固件

在unittest单元测试框架中,测试固件用于处理初始化的操作,例如,在对百度的搜索进行测试之前,首先需要打开浏览器并且进入到百度首页;测试结束后,需要关闭浏览器。测试固件提供了两种执行方式,一种是每执行一个测试用例,测试固件都会被执行到;另一种是不管执行多少个测试用例,测试固件都只执行一次。

2.1测试固件每次均执行

unittest单元测试框架提供了名为setUp和tearDown的测试固件。上代码:
__author__ = 'Hello'

import unittest

class BaiduTest(unittest.TestCase):
    def setUp(self):
        print('start')

    def tearDown(self):
        print('end')

    def test_baidu_so(self):
        print('测试用例执行')

if __name__ == '__main__':
    unittest.main(verbosity=2)

它的执行顺序是先执行setUp方法,在执行具体的测试用例test_baidu_so,最后执行tearDown方法。执行结果:

test_baidu_so (__main__.BaiduTest) ... ok
start

测试用例执行
end
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

Process finished with exit code 0
注:verbosity是一个选项,表示测试结果的信息复杂度,有0、1、2 三个值
0 (静默模式): 你只能获得总的测试用例数和总的结果 比如 总共10个 失败2 成功8
1 (默认模式): 非常类似静默模式 只是在每个成功的用例前面有个“.” 每个失败的用例前面有个 “F”
2 (详细模式):测试结果会显示每个测试用例的所有相关的信息
并且 你在命令行里加入不同的参数可以起到一样的效果
加入 --quiet 参数 等效于 verbosity=0
加入--verbose参数等效于 verbosity=2
什么都不加就是 verbosity=1
下面以百度首页为例,编写两个测试点。执行方式是setUp执行两次,tearDown也执行两次。代码:
__author__ = 'xiaotufei'

from selenium import webdriver
import unittest

class BaiduTest(unittest.TestCase):
    def setUp(self):
        self.driver=webdriver.Firefox()
        self.driver.implicitly_wait(5)
        self.drivermaxmize_window()
        self.driver.implicitly_wait(5)
        self.driver.get("http://www.baidu.com")
        self.driver.implicitly_wait(30)

    def tearDown(self):
        self.driver.quit()

    def test_baidu_news(self):
        #验证:测试百度首页点击新闻后的跳转
        self.driver.find_element_by_link_text('新闻').click()

    def test_baidu_map(self):
        #验证:测试百度首页点击地图后的跳转
        self.driver.find_element_by_link_text('地图').click()

if __name__ == '__main__':
    unittest.main(verbosity=2)

运行结果如下:

D:\Python\python.exe "D:\Work\Tools\JetBrains\PyCharm Community Edition 3.4.4\helpers\pycharm\utrunner.py" D:\Work\Tools\python_workspace\Python_unitest\1\baidu_news.py::BaiduTest true
Testing started at 18:30 ...
D:\Work\Tools\JetBrains\PyCharm Community Edition 3.4.4\helpers\pycharm\utrunner.py:2: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
  import imp

Process finished with exit code 0

运行以上代码后,浏览器会被打开两次,也会关闭两次,如果是在一个测试类中有N个测试用例,那么也就意味着打开/关闭N次浏览器,很显然,这并不是一个理想的选择。

2.2测试固件只执行一次

setUp和tearDown虽然经常使用,但是在UI自动哈测试中,一个系统的测试用例通常多达数百条,打开和关闭数百次浏览器显然不是很好的选择。在unittest单元测试框架中可以使用另外一个测试固件来解决这一问题,它就是setUpClass和tearDownClass方法。该测试固件方法是类方法,需要在方法上面加装饰器@classmethod。使用该测试固件,不管有多少个测试用例,测试固件只执行一次。
代码如下:

__author__ = 'xiaotufei'

import unittest

class UiTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print('start')

    @classmethod
    def tearDownClass(cls):
        print('end')

    def test_001(self):
        print('第一个测试用例')

    def test_002(self):
        print('第二个测试用例')

if __name__ == "__main__":
    unittest.main(verbosity=2)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值