• python之unittest


    unittest是单元测试的一个框架

    在说unittest之前,先说几个概念:

    TestCase 也就是测试用例

    TestSuite 多个测试用例集合在一起,就是TestSuite

    TestLoader是用来加载TestCase到TestSuite中的

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

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

    接下来开始写代码

    
    
    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()#运行所有的用例
    
    
    
     

    下面是一些常用的断言

    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(这个模块需要自己安装!)来生成测试报告:

    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)
        #执行测试套件
  • 相关阅读:
    CSS 文本
    javascript:void(0)的问题
    剑指offer
    牛课--C/C++
    Linux学习--第二波
    面经-csdn
    初学Linux
    二分查找法的实现和应用汇总
    vs2013下git的使用
    win10+vs2013+Qt5.4 安装方法
  • 原文地址:https://www.cnblogs.com/mpp0905/p/8636125.html
Copyright © 2020-2023  润新知