Python Web 自动化学习之 unitetest.Testsuit
一、unittest 类常用属性和方法
1)unittest.TestCase :这是所有测试用例类继承的基本类。
2)unittest.main():运行模块中以test命名的函数(调用时,TestLoader类搜索所有包含在该模块中以test开头命名的所有测试方法。有以说法是主要有test就可以被识别到,但是个人建议以test为开头,因为遇到过在使用TestSuite时,不是test开头的,没有被找到)。
3)unittest.TestSuite:创建测试套件,可以理解成是测试用例列表,用于测试用例的归档和整理。
4)unittest.TextTestRunner():通过该类下的run()来运行suite组装的测试用例。直接调用run(),执行suite参数。
5)unittest.defaultTestLoader():通过该类下的discover()方法可以自动根据测试目录--start_dir匹配查找测试用例文件(test*.py),并将查找到的测试用例组装到测试套件,直接调用run(),执行discover参数(路径,文件匹配条件)。
6)unittest.skip():选择不执行的测试用例。
- unittest.skip(reason),跳过该用例,传入参数是你要跳过的原因。
- unittest.skipIf(condition,reason),满足条件,则跳过该用例
- unittest.skipUnless(condition,reson),满足条件,则不跳过该用例
二、unittest.TestSuite,给测试套件添加测试用例的方法
1)使用 testsuite.addtest()
#方法一 :添加testcase
Test_suit.addTest(Fortest('fortest1'))
Test_suit.addTest(ExampleTestCast2('test03'))
![报错] ValueError: no such test method in <class 'data_ddt.ExampleTestCast2'>: test03
# 添加失败,百度出来的理由是 @ddt 所以只能用loader加载
#方法二:添加testcases
test_list = [Fortest('test_01'),Fortest('test_02'),Fortest('test_03')]
Test_suit.addTests(test_list)
2) 使用 loader 加载
loader = unittest.TestLoader() # 用例加载器
#loader 加载器的应用
# 方法一: 加载测试类
test_class = loader.loadTestsFromTestCase(ExampleTestCast2) #参数是测试类
Test_suit.addTest(test_class)
#方法二: 通过名称加载测试类
test_class1 = loader.loadTestsFromName('data_ddt.ExampleTestCast2') #参数是测试类名字符串
Test_suit.addTest(test_class1)
#方法三: 通过模块名称加载测试模块
sys.path.append('./') //测试目录
test_mod1 = loader.loadTestsFromModule(data_ddt) #参数是测试模块
Test_suit1.addTest(test_mod1)
#方法四: 还不知道和下面的方法区别 star_dir = './' Test_suit = loader.discover(start_dir=star_dir,pattern='data_d*.py')
3)使用 defaultTestLoader
#测试用例目录
star_dir = './'
# pattern='data_d*.py' 匹配条件
discove = unittest.defaultTestLoader.discover(start_dir=star_dir,pattern='data_d*.py')