亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python單元測試框架—Unittest

系統 2041 0

介紹

unittest原名為PyUnit,是由Java的JUnit衍生而來.它支持自動化測試,在測試中使用setup(初始化)和shutdown(關閉銷毀)操作,組織測試用例為套件(批量運行),以及把測試和報告獨立開來。為了實現這些,unittest以一種面向對象的方式產生了一些很重要的概念:

  • test fixture:fixture表示tests運行前需要做的準備工作以及結束后的清理工作。比如,創建臨時/代理數據庫、目錄或啟動一個服務器進程。
  • test case:test case是單元測試中的最小個體。它檢查特定輸入的響應信息。unittest提供了一個基礎類:TestCase,用來創建test case。
  • test suite:test suite是test case的合集,通常用test suite將test case匯總然后一起執行。
  • test runner:test runner是一個執行器,它可以執行case并提供結果給用戶。它可以提供圖形界面、文本界面或者返回一個值表示測試結果。

工作原理

unittest中最核心的五個概念是:test case, test suite,?testLoader,test runner, test fixture。

下面我們分別來解釋這四個概念的意思,先來看一張unittest的靜態類圖(下面的類圖以及解釋均來源于網絡,原文鏈接):

Python單元測試框架—Unittest_第1張圖片

  • 一個TestCase的實例就是一個測試用例。什么是測試用例呢?就是一個完整的測試流程,包括測試前準備環境的搭建(setUp),執行測試代碼(run),以及測試后環境的還原(tearDown)。單元測試(unit test)的本質也就在這里,一個測試用例是一個完整的測試單元,通過運行這個測試單元,可以對某一個問題進行驗證。
  • 而多個測試用例集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite。
  • TestLoader是用來加載TestCase到TestSuite中的,其中有幾個loadTestsFrom__()方法,就是從各個地方尋找TestCase,創建它們的實例,然后add到TestSuite中,再返回一個TestSuite實例。
  • TextTestRunner是來執行測試用例的,其中的run(test)會執行TestSuite/TestCase中的run(result)方法。?
  • 測試的結果會保存到TextTestResult實例中,包括運行了多少測試用例,成功了多少,失敗了多少等信息。
  • 而對一個測試用例環境的搭建和銷毀,是一個fixture。

簡單示例

            
              # coding=utf-8

__author__ = "小小漁夫"

from appium import webdriver
from common.HTMLTestRunner import HTMLTestRunner
import unittest


class LoginTest(unittest.TestCase):
    def setUp(self):
        desired_caps = {
            'platformName': 'Android',
            'deviceName': 'SGEEGEHIQ8I7CI90',
            'platformVersion': '7.0',
            'appPackage': 'com.XXX.mall',
            'appActivity': '.business.main.MainActivity'
        }
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

    def testCase(self):
        self.driver.find_element_by_id("bottom_nav").click()
        self.driver.find_element_by_name('使用其他方式登錄').click()
        self.driver.find_element_by_name('手機登錄').click()
        self.driver.find_element_by_id("username").send_keys("18300000000")
        self.driver.find_element_by_name('獲取驗證碼').send_keys("123456")
        self.driver.find_element_by_id("btn").click()

    def tearDown(self):
        self.driver.quit()

if __name__ == "__main__":
    filename = "E:\\report.html"
    # stream測試報告寫入文件的存儲區域,verbosity參數可以控制輸出的錯誤報告的詳細程度,默認為1如果設為0,則不輸出每一用例的執行結果,如果設為 2,則輸出詳細的執行結果
    runner = HTMLTestRunner.HTMLTestRunner(title="測試報告標題", description="這是測試報告的描述", stream=open(filename, "wb"),verbosity=2, retry=0)
    runner.run()


            
          

?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 青草国产视频 | 四虎影院久久久 | 久久亚洲高清观看 | 国产亚洲精品免费 | 综合图片亚洲 | 手机看片福利视频 | 99视频全部免费精品全部四虎 | 强制高潮18xxxxhd日韩 | 欧美日韩一级黄色片 | 久久亚洲精品tv | 久久天天 | 欧美日韩午夜视频 | 国产三及| 2021最新国产成人精品免费 | www.久久在线| 欧美日韩性猛交xxxxx免费看 | 天天躁狠狠躁 | 国产亚洲精品一区二区在线观看 | 午夜小视频网站 | 国产精品极品 | 久久亚洲精选 | 国农村精品国产自线拍 | 日韩高清欧美精品亚洲 | 一级欧美毛片成人免费视频 | 免费精品99久久国产综合精品 | 伊人不卡久久大香线蕉综合影院 | 香蕉视频一区二区 | 亚洲精品久久99久久一区 | 四虎在线影院 | 精品在线播放视频 | 九九精品在线播放 | 国产视频日本 | 亚洲一区二区三区成人 | 在线精品中文字幕福利视频 | 精品国产免费第一区二区三区日韩 | 一级毛片在线 | 福利视频在线免费观看 | 欧美 日本 国产 | 日日噜噜噜夜夜爽爽狠狠 | 精品视频在线观看免费 | 亚洲综合五月天婷 |