一、TestFixtrue
1、TestFixture简介
TestFixture用在测试方法前,或者测试方法后,主要功能是提供一些测试需要用的装置,这些装置可以是数据,可以是环境配置也可以是一个运行前状态。
2、TestFixture分类
(1)setup(), teardown()的方式,分别在每个测试方法执行前后执行。
(2)setUpClass(), tearDownClass()的方式,分别在每个测试类执行前后执行, setUpClass()和tearDownClass()只会执行一次,即使这个测试类有多个测试函数。
(3)setUpModule :整个模块开始前执行,tearDownModule:整个模块结束时执行。
setUpClass/tearDownClass 为类方法,需要通过@classmethod 进行装饰,另外方法的参数为cls,cls和self没有本质上的区别,都只表示方法的第一个参数
3、实例
import unittest
# 整个模块开始前执行
def setUpModule():
print("模块级别开始test module start")
# 整个模块结束时执行
def tearDownModule():
print("模块级别结束test module end")
class MyTest(unittest.TestCase):
# 测试用例类开始前执行
@classmethod
def setUpClass(cls) :
print("类级别开始 test class start" )
# 测试用例类结束时执行
@classmethod
def tearDownClass(cls) :
print("类级别结束 test class end")
# 测试用例开始前执行(以一条测试用例为单位)
def setUp(self) -> None:
print("用例级别开始 test case start")
# 测试用例结束时执行(以一条测试用例为单位)
def tearDown(self) -> None:
print("用例级别结束 test case end")
def test_case1(self):
print("用例 test case1")
def test_case2(self):
print("用例 test case2")
if __name__ == '__main__':
unittest.main()
->None :建议函数返回None。
二、测试框架
1、自动化测试的设计模式
(1)PMO设计模式
基础封装层
页面对象层
测试用例层
(2)关键字驱动模式
关键字封装
2、公共的封装层
(1)夹具的封装;
(2)selenium二次封装;
(3)ini和yaml全局配置文件封装;
(4)excel、csv文件的读写封装;
(5)数据库操作封装;
(6)调用外部的第三方库封装;
3、数据层
(1)excel数据驱动
(2)csv数据驱动
(3)yaml数据驱动
(4)数据库数据驱动
4、文件层:
(1)HTML报告文件;
(2)log日志文件;
(3)全局配置文件;
(4)错误截图文件;
(5)邮件附件文件;
(6)接口关联文件;
三、忽略测试用例
不需要的测试用例
import unittest
class MyTest(unittest.TestCase):
a = 18
@unittest.skip('无条件忽略')
def test_case1(self):
print("用例 test case1")
@unittest.skipIf(a >= 16,"条件为true忽略")
def test_case2(self):
print("用例 test case2")
@unittest.skipUnless(a >= 20, "条件为false忽略")
def test_case3(self):
print("用例 test case3")
if __name__ == '__main__':
unittest.main()
输出结果:
参考文献: