1.什么是setUp()和tearDown()函数?
setUp()函数是在众多函数或者说是在一个类类里面最先被调用的函数,而且每执行完一个函数都要从setUp()调用开始后再执行下一个函数,有几个函数就调用他几次,与位置无关,随便放在那里都是他先被调用。
tearDown()函数是在众多函数执行完后他才被执行,意思就是不管这个类里面有多少函数,他总是最后一个被执行的,与位置无关,放在那里都行,最后不管测试函数是否执行成功都执行tearDown()方法;如果setUp()方法失败,则认为这个测试项目失败,不会执行测试函数也不执行tearDown()方法。
2.为什么我们要用setUp()和tearDown()函数?
我们利用这一特性在自动化中setup主要是进行测试前的初始化工作,比如在接口测试前面做一些前置的参数赋值,数据库操作等等 teardown是测试后的清除工作,比如参数还原或销毁,数据库的还原恢复等
assertEqual(a, b, msg) 断言a和b是否相等,如果不相等则测试失败。msg为可选参数,用于失败时打印信息
assertNotEqual(a, b) 断言a和b是否相等,如果相等则测试失败
assertTrue(x)
assertFalse(x)
assertIs(a, b) 判断a和b是否为同一对象
assertIsNot(a, b)
assertIsNone(x)
assertIsNotNone(x)
assertIn(a, b) a in b
assertNotIn(a, b)
举例:
#主要是为了演示setup和teardown以及一些断言方法
import unittest
class MyTestCase(unittest.TestCase):
# ctrl+o 一个快捷方式
def setUp(self) -> None: #实例方法运行一个放法就会调用一次
print("setUp...")
def test01(self):
print("test01")
def test02(self):
print("test02")
#断言
self.assertEqual(1,1)
self.assertIn(1,[1,2,3])
def tearDown(self) -> None:
print("tearDown")
@classmethod
def setUpClass(cls) -> None:# 类方法 只运行一次而且先运行
"""因为setup类是只运行一次所以一般情况下就方这里"""
print("setUpClass")
@classmethod
def tearDownClass(cls) -> None:
print("tearDownClass")
if __name__ == '__main__':
unittest.main()
运行结果:
从网上借鉴了别人写的:
from selenium import webdriver
import unittest # 第一步引入一个unittest
import time
class Search(unittest.TestCase): # 第二步创建继承一个unittest.TestCase的类
def setUp(self): # 第三步定义一个setup,放一些准备的工作,或者准备一些测试数据。
print('========== 测试开始 ==========')
self.driver = webdriver.Chrome(r'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe') # 加载chrome驱动
self.driver.maximize_window() # 放大浏览器
self.driver.get("https://www.baidu.com") # 打开网址
print(self.driver.title) # 获取标题头并打印出来
print(self.driver.current_url) # 获取当前页面的url
time.sleep(2) # 休眠5s
def test_001(self): # 进行搜索
self.driver.find_element_by_id('kw').send_keys("高圆圆") # 输入账号
self.driver.find_element_by_id('su').click() # 点击搜索
time.sleep(2)
print(u'进入高圆圆的搜索结果页')
def test_002(self): # 进行搜索
self.driver.find_element_by_id('kw').send_keys("张天爱") # 输入账号
self.driver.find_element_by_id('su').click() # 点击搜索
time.sleep(2)
print(u'进入张天爱的搜索结果页')
def tearDown(self): # 第三步:定义一个tearDown,当我在测试完的时候我要对测试有一个销毁的过程比如说关闭浏览器,那么我们就写在tearDown当中
self.driver.quit()
print('========== 测试结束 ==========\n')
if __name__ == '__main__': # 如果其他的类调用的这个类的时候他就会自动忽略掉这个函数,他是为了测试自身的类用的
unittest.main() # 启动程序
运行结果: