unittest之二makeSuite\testload\discover及測試報告teseReport


測試套件suite除了使用addTest以外,還有使用操作起來更更簡便的makeSuite\testload\discover

1、makeSuite,創建測試套件,傳的參數是要執行的測試用例所在的類名,如下代碼makeSuite()里傳入的就是用例test01\test02所在的類Login,

代碼:reload(sys)
     sys.setdefaultencoding('utf-8')是將代碼中的字符類型都轉為UTF-8編碼格式
#!/usr/bin/env.python #-*-coding:utf-8-*- from selenium import webdriver import unittest import sys reload(sys) sys.setdefaultencoding('utf-8') class Login(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.Firefox() cls.driver.maximize_window() cls.driver.implicitly_wait(30) cls.driver.get('https://www.baidu.com/') def test01(self): '''驗證網頁title是否正確''' self.assertTrue(str(self.driver.title).startswith('百度一下')) def test02(self): '''驗證網址是否正確''' self.assertEqual(self.driver.current_url, 'https://www.baidu.com/') @classmethod def tearDownClass(cls): cls.driver.quit() @staticmethod def suite(): suite = unittest.makeSuite(Login) return suite if __name__ == '__main__': unittest.TextTestRunner(verbosity=2).run(Login.suite())

2、testload:一般只有這個方法suite=unittest.TestLoader.loadTestsFromTestCase(Login),傳入的也是類名

#!/usr/bin/env.python #-*-coding:utf-8-*- from selenium import webdriver import unittest class Login(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.Firefox() cls.driver.maximize_window() cls.driver.implicitly_wait(30) cls.driver.get('https://www.baidu.com/') def test01(self): '''驗證網頁title是否正確''' self.assertEqual(self.driver.title,u'百度一下,你就知道') def test02(self): '''驗證網址是否正確''' self.assertEqual(self.driver.current_url, 'https://www.baidu.com/') @classmethod def tearDownClass(cls): cls.driver.quit() @staticmethod def suite(): suite=unittest.TestLoader.loadTestsFromTestCase(Login) return suite if __name__ == '__main__': unittest.TextTestRunner(verbosity=2).run(Login.suite())

3、discover:在實際測試中,被測試的系統肯定是多個模塊,然后一個模塊中有N條用例,discover就是以遞歸的方式找到制定目錄里的文件(要被執行的用例模塊文件,一般習慣都是test01.py.x的命名格式),加載在測試套件中,進行運行

discover的三個參數:

start_dir=os.path.join(os.path.dirname(__file__)+'/test1'),要被測試的文件所在的目錄,一般是用os.path拼接

pattern='test*.py',用正則表達式匹配測試用例的文件名,*表示一個或多個字符,'test*.py'表示以test開頭的,中間N個字符,以.py結束的文件

top_level_dir=None 默認的

 

具體代碼:

#!/usr/bin/env.python #-*-coding:utf-8-*- import unittest import os def suite(): suite=unittest.defaultTestLoader.discover( start_dir=os.path.join(os.path.dirname(__file__)+'/test1'), pattern='test*.py', top_level_dir=None) return suite if __name__=='__main__': unittest.TextTestRunner(verbosity=2).run(suite())

4、斷言

assertEqual(a,b):a的值和b的值如果相等-->PASS

assertTrue(a) 表達式a的結果為真,則PASS

#!/usr/bin/env.python #-*-coding:utf-8-*- from selenium import webdriver import unittest import sys reload(sys) sys.setdefaultencoding('utf-8') class Login(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver=webdriver.Firefox() cls.driver.maximize_window() cls.driver.implicitly_wait(30) cls.driver.get('https://www.baidu.com/') def test01(self): '''驗證網頁title是否正確''' self.assertTrue(self.driver.title.startswith('百度一下')) def test02(self): '''驗證網址是否正確''' self.assertEqual(self.driver.current_url,'https://www.baidu.com/') @classmethod def tearDownClass(cls): cls.driver.quit() @staticmethod def suite(): suite=unittest.makeSuite(Login) return suite if __name__=='__main__': unittest.TextTestRunner(verbosity=2).run(Login.suite())

 

5、測試報告

5.1、使用對象file生成測試報告

fp=file(os.path.join(os.path.dirname(__file__)+'/TestReport.html'),'wb')

拆分解釋:os.path.join(os.path.dirname(__file__)+'/TestReport.html')測試報告的路徑(和名稱),

'wb':以二進制的方式寫入

5.2、測試執行runner寫法如下:(測試報告需導入import  HTMLTestRunner)

runner=HTMLTestRunner.HTMLTestRunner( stream=fp, title=u'報告的標題TestReport', description=u'報告的描述' ) 

HTMLTestRunner的三個參數:

stream=fp  指定測試報告是哪個文件

title=u'報告的標題TestReport',測試報告的標題

description=u'報告的描述'測試報告的描述

具體代碼:

#!/usr/bin/env.python #-*-coding:utf-8-*- import os,sys import unittest import HTMLTestRunner reload(sys) sys.setdefaultencoding('utf-8') def suite(): suite=unittest.defaultTestLoader.discover( start_dir=os.path.join(os.path.dirname(__file__)+'/test1'), pattern='test*.py', top_level_dir=None) return suite if __name__=='__main__': fp=file(os.path.join(os.path.dirname(__file__)+'/TestReport.html'),'wb') runner=HTMLTestRunner.HTMLTestRunner( stream=fp, title=u'報告的標題TestReport', description=u'報告的描述' ) runner.run(suite())

測試報告:

右擊在瀏覽器打開testReport.html,截圖如下

注意:每個用例要測的是什么的描述必須要寫,要不然測試報告中沒有測試用例冒號:后的文字,就不知道哪個用例是測什么功能點的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM