zoukankan      html  css  js  c++  java
  • python单元测试框架unittest

    在python编程语言中,常用的测试框架有unittest、pytest。unittest是python内置库,无需安装,它只能适用于面向对象的编程方式,不适应函数式编程。

    unittest组成:测试固件、测试用例、测试套件、测试执行、测试报告

    1、测试固件:在用例执行之前进行初始化数据或者执行之后清理数据操作。

    import unittest
    from selenium import webdriver
    
    class UI(unittest.TestCase):
        def setUp(self): #每个用例前执行
            self.driver = webdriver.Chrome()
            self.driver.maximize_window()
            self.driver.get('http://www.baidu.com/')
    
        def tearDown(self): #每个用例执行完毕后执行
            self.driver.quit()

    另外一种是每个测试集执行前和后才执行,只执行一次

    import unittest
    from selenium import webdriver
    
    class UI(unittest.TestCase):
        @classmethod
        def setUpClass(cls):
            cls.driver = webdriver.Chrome()
            cls.driver.maximize_window()
            cls.driver.get('http://www.baidu.com/')
    
        @classmethod
        def tearDownClass(cls):
            cls.driver.quit()

    2、测试用例,测试类要继承unittest.TestCase,测试用例命名要求以test开头,建议test_开头

    import unittest
    from selenium import webdriver
    
    class UI(unittest.TestCase):
        # @classmethod
        # def setUpClass(cls):
        def setUp(self):
            self.driver = webdriver.Chrome()
            self.driver.maximize_window()
            self.driver.get('http://www.baidu.com/')
        # @classmethod
        # def tearDownClass(cls):
        def tearDown(self):
            self.driver.quit()
    
        def test_baidu_title(self):
            '''测试百度标题'''
            self.assertEqual(self.driver.title,'百度一下,你就知道')
    
        def test_baidu_news(self):
            '''测试百度新闻网址'''
            self.driver.find_element_by_link_text('新闻').click()
            self.assertEqual(self.driver.current_url,'http://news.baidu.com/')
    
        def test_baidu_dt(self):
            '''测试百度贴吧地址'''
            self.driver.find_element_by_link_text('贴吧').click()
            self.assertEqual(self.driver.current_url,'https://tieba.baidu.com/index.html')

    3、测试套件:测试用例的集合,unittest中主要通过TestSuite类提供对测试套件的支持。

    添加到测试套件中的用例有多种方式

    1)、按测试用例添加执行

    import unittest
    from selenium import webdriver
    
    class UI(unittest.TestCase):
        def setUp(self): #每个用例前执行
            self.driver = webdriver.Chrome()
            self.driver.maximize_window()
            self.driver.get('http://www.baidu.com/')
    
        def tearDown(self): #每个用例执行完毕后执行
            self.driver.quit()
    
        def test_baidu_title(self):
            '''测试百度标题'''
            self.assertEqual(self.driver.title,'百度一下,你就知道')
    
        def test_baidu_news(self):
            '''测试百度新闻网址'''
            self.driver.find_element_by_link_text('新闻').click()
            self.assertEqual(self.driver.current_url,'http://news.baidu.com/')
    
        def test_baidu_dt(self):
            '''测试百度贴吧地址'''
            self.driver.find_element_by_link_text('贴吧').click()
            self.assertEqual(self.driver.current_url,'https://tieba.baidu.com/index.html')
    
    class api(unittest.TestCase):
        def test_001(self):
            pass
    
        def test_002(self):
            pass
    
    if __name__ == '__main__':
        '''按测试用例执行'''
        suite = unittest.TestSuite()
        suite.addTest(UI('test_baidu_title'))
        print(suite)
        unittest.TextTestRunner(verbosity=2).run(suite)

    2)、按测试类添加执行

        '''按测试类执行'''
        suite = unittest.TestLoader().loadTestsFromTestCase(api)
        # suite.loadTestsFromTestCase(api)
        unittest.TextTestRunner(verbosity=2).run(suite)

    3)、按测试模块添加执行

        '''按测试模块执行'''
        suite = unittest.TestLoader().loadTestsFromModule('test_xunit.py')
        # suite.loadTestsFromTestCase(api)
        unittest.TextTestRunner(verbosity=2).run(suite)

    4、用例测试执行

    在unittest中,测试点的执行顺序是依据ascill码来执行的,数字与字母的顺序为: 0-9, A-Z, a-z,所以以A开头的测试用例会优先以a开头用例执行

    5、测试报告

  • 相关阅读:
    sql 数据库还原脚本 (kill链接+独占
    最长回文字符串
    UVa 455 Periodic Strings
    UVa 1225 Digit Counting
    UVa 340 Master-Mind Hints
    UVa 10976
    UVa 725
    UVa 11059
    POJ1887 最长下降子序列
    最大连续子序列算法(数组的连续子数组最大和(首尾不相连))
  • 原文地址:https://www.cnblogs.com/heertong/p/12445571.html
Copyright © 2011-2022 走看看