UnitTest基础测试实例
Posted suancaipaofan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UnitTest基础测试实例相关的知识,希望对你有一定的参考价值。
1.四大组件:
a.test fixture:setUp(前置条件),tearDown(后置条件),用于初始化测试用例及清理和释放资源
b.test case:测试用例,通过集成unittest.TestCase,来实现用例的继承。在UnitTest中,测试用例都是通过test来识别的。
例:class forTest(unites.TestCase);def test_xx
c.test suite:测试套件,也称为测试用例集
d.test runner:运行器,一般通过runner来调用suite去执行测试
2.UnitTest运行机制:通过在main函数中,调用unittest.main()运行所有内容。
import unittest class forTest(unittest.TestCase): # 类的初始化 @classmethod def setUpClass(cls) -> None: print(‘sClass‘) # 类的释放 @classmethod def tearDownClass(cls) -> None: print(‘tclass‘) # 用例初始化(用例执行前执行) def setUp(self) -> None: print(‘setUp‘) # 用例释放(用例执行后执行) def tearDown(self) -> None: print(‘tearDown‘) #函数 def plus(self,a,b): print(a+b) return a+b def test_c(self): self.plus(1,2) print(‘c‘) # 测试用例 def test_a(self): print(‘a‘) def test_b(self): print(‘b‘) if __name__==‘__main__‘: unittest.main(verbosity=2) # verbosity=2 让结果更细致些 ‘‘‘ 只有test_xx() 的函数才能执行 ‘‘‘
打印结果:
3.ddt数据驱动
ddt(data-driver tests), 在实际测试中,单个测试需要用多种不同的条件(测试数据)对其测试。
a. 在class前定义@ddt,data用于设定参数
下面的例子实现自动打开百度,并输入‘网球王子‘ 、‘王者荣耀‘,相当于两条测试数据
import unittest from selenium import webdriver import time from ddt import ddt,data, @ddt class forTest01(unittest.TestCase): def setUp(self) -> None: self.driver = webdriver.Chrome() self.driver.get(‘http://www.baidu.com/‘) # pass def tearDown(self) -> None: time.sleep(2) # pass @data(‘网球王子‘, ‘王者荣耀‘) def test_1(self, txt): self.driver.find_element_by_id(‘kw‘).send_keys(txt) self.driver.find_element_by_id(‘su‘).click() if __name__==‘__main__‘: unittest.main()
b. unpack用于解析参数。当需要传入多个参数时,unpack可以依次解析传参。
@ddt class forTest01(unittest.TestCase): def setUp(self) -> None: self.driver = webdriver.Chrome() # pass def tearDown(self) -> None: time.sleep(2) # pass @data((‘http://www.baidu.com/‘, ‘王者荣耀‘),(‘http://www.baidu.com/‘,‘网球王子‘)) @unpack def test_1(self, url, txt): self.driver.get(url) self.driver.find_element_by_id(‘kw‘).send_keys(txt) self.driver.find_element_by_id(‘su‘).click()
以上是关于UnitTest基础测试实例的主要内容,如果未能解决你的问题,请参考以下文章