Python+selenium之简单介绍unittest单元测试框架
一、unittest简单介绍
unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是test,也就是一个测试用例。要了解unittest单元测试框架,先来了解以下几个重要的概念。
1.测试固件(test fixture)
一个测试固件包括两部分,执行测试代码之前的准备部分和测试结束之后的清扫代码。这两部分一般用函数setUp()和tearDown()表示。这里举例以下,例如要测试百度搜索selenium这个场景,我们的测试固件可以这样写,setUp()里写打开浏览器,浏览器最大化,和打开百度首页等脚本代码;在tearDown()里写结束搜索后,退出并关闭浏览器的代码。
2.测试用例(test case)
unittest中管理的最小单元是测试用例,一个测试用例,包括测试固件,和具体测试业务的函数或者方法。一个测试用例中,测试固件可以不写,但是至少有一个已test开头的函数。unittest会自动化识别test开头的函数是测试代码,如果你写的函数不是test开头,unittest是不会执行这个函数里面的脚本的,这个千万要记住,所有的测试函数都要test开头,记住是小写的哦。
3.测试套件 (test suite)
很简单,就是很多测试用例的集合,叫测试套件,一个测试套件可以随意管理多个测试用例。如果测试用例比作单个学生,测试套件就是好像是班级的概念。
4.测试执行器 (test runner)
test runner是一个用来执行加载测试用例,并执行用例,且提供测试输出的一个组建。test runner可以加载test case或者test suite进行执行测试任务。
二、举例
1.此例暂时只是简单介绍test fixture和test case的使用
2.新建一个testbaidu.py文件
3.导入unittest模块
4.当前测试类继承unittest.TestCase,相当于当前利用unittest创建了一个test case,这个test case是能够被unittest直接识别。
5.写setUP(),主要是打开浏览器和打开站点
6.写tearDown,用来关闭浏览器等
7.写一个测试方法testSearch
8.相关脚本代码如下所示:
#coding:utf=8
from selenium import webdriver
import time
import unittest
class Baidu(unittest.TestCase):
def setUp(self):
self.driver=webdriver.Firefox()
self.driver.maximize_window()
self.driver.implicitly_wait(8)
self.driver.get("https://www.baidu.com/")
def tearDown(self):
time.sleep(2)
self.driver.quit()
def testSearch(self):
self.driver.find_element_by_id('kw').send_keys("selenium")
self.driver.find_element_by_id('su').click()
try:
assert 'selenium' in self.driver.title
print 'Test pass'
except Exception as e:
print 'Test failed',format(e)
9.编写好之后,直接点击鼠标右键,【run Unittests XXX】即可
10.运行之后的界面如下图所示
11.注意:之前我将这个testbaidu.py文件名命名的是kuang.py,然后鼠标右键时,就没有【run Unittests XXX】这个选项,重命名之后,右键鼠标就有这个选项了,记住,不能直接命名为test.py,这个右键鼠标也是不行的。