unittest框架
1、unittest框架默认用ACSII码顺序加载测试用例,数字与字母的顺序为:0~9,A~Z,a~z
(1)对于类来说,class TestAxx 会优先于class TestBxx被执行
(2)对于方法来说,test_aaa()方法会有优先于test_bbb()被执行,例如按照test0,test1,test10,test11....test20,test21执行
import unittest
class TestBdd(unittest.TestCase):
def setup(self):
print("test TestBdd :")
def test_ccc(self):
print("test ccc")
def test_aaa(self):
print("test aaa")
def tearDown(self):
pass
class TestAdd(unittest.TestCase):
def setup(self):
print("test TestAdd :")
def test_bbb(self):
print("test bbb")
def tearDown(self):
pass
if __name__ == '__main__':
unittest.main()
执行结果
==============
test TestAdd:
test bbb
.test TestBdd:
test aaa
.test TestBdd:
test ccc
.
-------------------------
(3)如果不想让test—bbb()先执行,需要通过TestSuite类的addTest()方法按照一定的顺序来加载
run.py
....
if __name__ == '__main__':
#构造测试集
suite = unittest.TestSuite()
suite.addTest(TestBdd("test_ccc"))
suite.addTest(TestAdd("test_bbb"))
suite.addTest(TestBdd("test_aaa"))
#执行测试
runner = unittest.TextTestRunner()
runner.run(suite)
执行顺序:
===============
test TestBdd:
test ccc
.test TestAdd:
test bbb
.test TestBdd:
test aaa
.
--------------------
2、@paramunittest框架接受参数时需使用setParameters方法,而且只能这样命名,括号后面的参数分别接受传入的参数名称。前面定义的是字典,那参数就跟前面字典的key保持一致
注意:使用@paramunittest时候,setParameters的参数顺序要与传进@paramunittest的参数顺序一致
3、unittest.defaultTestLoader()类:通过该类下的discover方法可自动根据test_dir路径下查找测试用例文件(test*.py),并将查找的测试用例组装到测试套件,用run()方法执行:discover=unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
4、unittest.TextTestRunner跟HTMLTestRunner.HTMLTestRunner都是调用父类(TestRunner )来执行用例,不过生成的报告格式不一致
5、global用于修饰变量,将变量定义为全局变量
6、readline读取返回的是string,读取即可;readlines返回的是list列表,需要转换为str读取,同时换行的位置会被转换为\n
7、unittest有几个重要概念:
(1)test case:一个测试用例就是一个完整的测试流程,包括环境准备(set up),执行(run),测试环境还原(tear down)
(2)test suite:一个功能可能需要多个用例,将多个用例集合在一起执行,可以通过addTest将test case加载到test suite中
(3)test runner:unittest用来执行用例,将结果保存在TextTestResult
Unittest整个流程为写好testcase,将多个testcase用addtest集成到test suite中,用test runner执行test suite,将结果保存在texttestresult中
(4)unittest函数执行入口 unittest.main()
8、想要跳过某个case,用unittest的skip方法装饰器,并传递此方法名为实参作为参数传递@unittest.skip(方法名)
9、unittest框架在使用discover时候,需要将测试用例修改为以test开头,否则无法加载
浙公网安备 33010602011771号