tearDown(self) -> None什么意思
时间: 2024-06-05 07:08:45 浏览: 14
`tearDown(self)` 是一个在 Python unittest 中的测试框架中的一个方法,用于在每个测试用例执行完毕后进行清理工作。它在 `setUp(self)` 方法之后执行,用于清理测试环境,例如关闭打开的文件、数据库连接等。
`tearDown(self)` 方法不需要参数,它只是在测试用例执行完毕后自动执行,并且不能接受任何参数。在执行多个测试用例时,每个测试用例执行完毕后都会执行一次 `tearDown(self)` 方法。
相关问题
#coding=utf-8 import unittest from ddt import ddt from ddt import data # 导入data # 类之前定义装饰器,表示在类中要使用ddt了 @ddt class MyTestCase(unittest.TestCase): def setUp(self) -> None: print('{:=^20}'.format("测试开始")) def tearDown(self) -> None: print("{:=^20}".format('测试结束')) # data用于设定参数 @data('战狼', '哪吒', '流浪地球', '复仇者联盟') def test_1(self, txt): print(txt) if __name__ == '__main__': unittest.main(verbosity=2)
这段代码是一个使用了ddt库进行参数化测试的Python单元测试代码,其中:
- 使用@ddt装饰器表示在类中要使用ddt库;
- 使用@data注解来设定参数;
- test_1方法接收参数txt,并进行打印输出;
- 在if __name__ == '__main__':语句中运行unittest的main方法执行测试。
这段代码的执行输出为:
```
测试开始=========
战狼
测试结束=========
测试开始=========
哪吒
测试结束=========
测试开始=========
流浪地球
测试结束=========
测试开始=========
复仇者联盟
测试结束=========
```
每个参数都会被作为一个测试用例进行执行。
import unittest from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time class forTest(unittest.TestCase): # 测试用例初始化 # 打开谷歌浏览器,并进入百度 def setUp(self) -> None: self.driver = webdriver.Chrome() self.driver.get('http://www.baidu.com') # 测试用例释放 # 等待 3s,关闭浏览器 def tearDown(self) -> None: time.sleep(3) self.driver.quit() # 输入‘高考',并点击搜索 def test_1(self): pass self.driver.find_element(By.ID, 'kw').send_keys('高考') self.driver.find_element_by_id('su').click() # 输入‘百度翻译',并点击搜索 def test_2(self): pass self.driver.find_element(By.ID, 'kw').send_keys('百度翻译') self.driver.find_element_by_id('su').click() if __name__ == '__main__': unittest.main()
根据您提供的代码,可能是由于在 `test_1` 和 `test_2` 方法中,`pass` 语句放置在了 `self.driver.find_element` 方法之前,导致这两个方法没有实际执行任何操作。因此,您需要将 `pass` 语句放置在 `def` 语句之前,或者直接删除 `pass` 语句。
修改后的代码如下:
```
import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
class forTest(unittest.TestCase):
# 测试用例初始化
# 打开谷歌浏览器,并进入百度
def setUp(self) -> None:
self.driver = webdriver.Chrome()
self.driver.get('http://www.baidu.com')
# 测试用例释放
# 等待 3s,关闭浏览器
def tearDown(self) -> None:
time.sleep(3)
self.driver.quit()
# 输入‘高考',并点击搜索
def test_1(self):
self.driver.find_element(By.ID, 'kw').send_keys('高考')
self.driver.find_element_by_id('su').click()
# 输入‘百度翻译',并点击搜索
def test_2(self):
self.driver.find_element(By.ID, 'kw').send_keys('百度翻译')
self.driver.find_element_by_id('su').click()
if __name__ == '__main__':
unittest.main()
```
这样修改后,您可以运行这个测试用例,分别进行两个测试方法,分别搜索高考和百度翻译。