一、【使用 unittest 的标准流程为】
1.从 unittest.TestCase 派生一个子类
2.在类中定义各种以 “test_” 打头的方法
3.通过 unittest.main() 函数来启动测试
@python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# coding=utf-8
'''
Project:百度搜索测试用例
'''
from selenium import webdriver
import unittest, time
class BaiduTest(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(30) # 隐性等待时间为30秒
self.base_url = "https://www.baidu.com"
def test_baidu(self):
driver = self.driver
driver.get(self.base_url + "/")
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("unittest")
driver.find_element_by_id("su").click()
time.sleep(3)
title = driver.title
self.assertEqual(title, u"unittest_百度搜索")
def tearDown(self):
self.driver.quit()
if __name__ == "__main__":
unittest.main()
二、 setUp() 和 tearDown()
在unittest 里,它们提供了为测试进行准备和扫尾工作。
setUp() 方法用于在执行每条测试项前,被调用,tearDown() 方法用于在每条测试项前先后,被调用。
三、setUpClass() 和 tearDownClass()
用于全程只调用一次 setUp/tearDown,配合 @classmethod 装饰器使用。比如:
@python
import unittest
class simple_test(unittest.TestCase):
@classmethod
def setUpClass(self):
self.foo = list(range(10))
def test_1st(self):
self.assertEqual(self.foo.pop(),9)
def test_2nd(self):
self.assertEqual(self.foo.pop(),8)
if __name__ == '__main__':
unittest.main()
运行结果显示依然是全部通过,说明这次在全部测试项被调用前只调用了一次 setUpClass()
四、 setUpModule() 和 tearDownModule() 函数
这个是函数,与TestCase同级
@python
import unittest
def setUpModule():
pass
class BaiduTest(unittest.TestCase):
注意:tearDown() 仅在 setUp() 成功执行的情况下才会执行,并一定会被执行。