zoukankan      html  css  js  c++  java
  • 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)
        #执行测试套件
  • 相关阅读:
    用Margin还是用Padding?
    更优雅的清除浮动float方法
    清除浮动float (:after方法)
    px,em,rem
    load()方法
    PHP函数详解:call_user_func()使用方法
    移动端touch事件影响click事件以及在touchmove添加preventDefault导致页面无法滚动的解决方法
    Mysql开启远程连接方法
    mysql的字符串连接符
    php使用curl访问https返回无结果的问题
  • 原文地址:https://www.cnblogs.com/mpp0905/p/8636125.html
Copyright © 2011-2022 走看看