python之unittest

unittest是单元测试的一个框架html

在说unittest以前,先说几个概念:python

TestCase 也就是测试用例框架

TestSuite 多个测试用例集合在一块儿,就是TestSuite单元测试

TestLoader是用来加载TestCase到TestSuite中的测试

TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息ui

在写代码前,须要把两个文件拷贝到libraries中:HTMLTestRunner.py 和BeautifulReport.zip解压后的文件spa

接下来开始写代码code

 
 
import unittest class MyTest(unittest.TestCase):#继承unittest.TestCase
    def tearDown(self): #每一个测试用例执行以后操做
        print("teardown1111") def setUp(self): #每一个测试用例执行以前操做
        print("setup2222") def test_run01(self): # 测试用例
        self.assertEqual(1,1) def test_run02(self): self.assertIn('a', 'mapeipei') if __name__=='__main__': unittest.main()#运行全部的用例
 
 

 

 

下面是一些经常使用的断言xml

assertEqual(a, b)     a == b assertNotEqual(a, b) a != b assertTrue(x) bool(x) is True assertFalse(x) bool(x) is False assertIsNone(x) x is None assertIsNotNone(x) x is not None assertIn(a, b) a in b assertNotIn(a, b) a not in b

接下来咱们导入HTMLTestRunner(这个模块须要本身安装!)来生成测试报告:htm

import unittest import HTMLTestRunner class MyTest(unittest.TestCase):#继承unittest.TestCase
    def tearDown(self): #每一个测试用例执行以后操做
        print("teardown1111") def setUp(self): #每一个测试用例执行以前操做
        print("setup2222") def test_run01(self): # 测试用例
        self.assertEqual(1,1) def test_run02(self): self.assertIn('a', 'mapeipei') def test_run03(self): self.assertEqual(2,2) if __name__=='__main__': testsuit = unittest.TestSuite()#建立一个测试集合
    # testsuit.addTest(MyTest('test_run01'))#往测试套件中单个添加测试用例
    testsuit.addTest(unittest.makeSuite(MyTest)) #添加MyTets类下的全部用例
    f = open('res.html','wb')#打开一个保存结果的html文件
    runner = HTMLTestRunner.HTMLTestRunner(stream=f,title='测试报告',description='测试状况') #生成执行用例的对象
 runner.run(testsuit) #执行测试套件

假如咱们有不少测试用例的py文件,都放在某个目录下,这时候须要把该目录下的测试用例所有执行,可使用unittest.defaultTestLoader.discover

import unittest import HTMLTestRunner suite = unittest.TestSuite()#建立测试套件
all_case = unittest.defaultTestLoader.discover(u'E:\\testpy\\python-mpp\\练习\\0618练习\\case','test_*.py') #找到某个目录下全部已test开始的py文件里面的测试用例
for case in all_case: suite.addTests(case)#把全部的用例添加进来
fp = open('res02.html','wb') runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title='all_tests',description='全部测试状况') runner.run(suite)

上述产生的测试报告是html格式的,jenkins没法识别,显示不出来,那我们就要产生一些Jenkins认识的测试报告,Jenkins认识xml格式的报告,那我们就产生xml格式的呗,就须要用一个新的模块,xmlrunner,安装直接 pip install xmlrunner便可,代码以下:

if __name__=='__main__': testsuit = unittest.TestSuite()#建立一个测试集合
    # testsuit.addTest(MyTest('test_run01'))#往测试套件中单个添加测试用例
    testsuit.addTest(unittest.makeSuite(MyTest)) #添加MyTets类下的全部用例
    runner = xmlrunner.XMLTestRunner(output='report')#指定报告存放的目录
 runner.run(testsuit) #执行测试套件
相关文章
相关标签/搜索