亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python Unittest原理及基本使用方法

 更新時間:2020年11月06日 09:23:20   作者:南風丶輕語  
這篇文章主要介紹了Python Unittest原理及基本使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

基本使用步驟:

1、import unittest

2、新建一個Class繼承unittest.TestCase

3、定義一個以test開頭的函數(shù)作為測試用例【必須以test開頭】

4、執(zhí)行測試用例前都會先調(diào)用Setup函數(shù)【每個測試用例調(diào)用一次】或者setupClass函數(shù)【所有測試用例僅調(diào)用一次】

5、執(zhí)行完測試用例后都會調(diào)用tearDown函數(shù)【多次】和tearDownClass函數(shù)【僅一次】

PS:

1、不能重寫init()

2、函數(shù)必須以test開頭才能作為測試用例

3、setupClass()和tearDownClass()必須用@classmethod修飾

# -*- encoding=utf-8 -*-

import unittest
class Demo1(unittest.TestCase):
  def setUp(self):
    print '調(diào)用 setup 函數(shù)'

  @classmethod
  def setUpClass(cls):
    print '調(diào)用 setupClass 函數(shù)'

  def tearDown(self):
    print '調(diào)用 tearDown 函數(shù)'
  @classmethod
  def tearDownClass(cls):
    print '調(diào)用 tearDownClass 函數(shù)'

  @staticmethod
  def test_add():
    print '3 + 5 = {}'.format(3 + 5)

  @staticmethod
  def test_sub():
    print '3 - 5 = {}'.format(3 - 5)


if __name__ == '__main__':
  unittest.main()

運行結(jié)果

調(diào)用 setupClass 函數(shù)

調(diào)用 setup 函數(shù)

3 + 5 = 8

調(diào)用 tearDown 函數(shù)

調(diào)用 setup 函數(shù)

3 - 5 = -2

調(diào)用 tearDown 函數(shù)

調(diào)用 tearDownClass 函數(shù)

Ran 2 tests in 0.012s

OK

TestSuite【測試組】添加測試用例進行測試

# -*- encoding=utf-8 -*-


class Class1(object):
  def __init__(self):
    print '調(diào)用 Class1 初始化函數(shù)'
    self.name = '未定義姓名'
    self.age = '未定義年齡'

  def set_name(self, name):
    self.name = name

  def set_age(self, age):
    self.age = age

  def print_name(self):
    print 'Class1 的姓名是:{}'.format(self.name)

  def print_age(self):
    print 'Class1 的年齡是:{}'.format(self.age)


if __name__ == '__main__':
  pass

 

# -*- encoding=utf-8 -*-

import unittest

from Class1 import Class1


class CallClass1(unittest.TestCase):

  def setUp(self):
    self.class1 = Class1()
    pass

  def tearDown(self):
    self.class1 = None
    pass

  def test_set_name(self):
    self.class1.set_name('設置了名字')
    self.class1.print_name()

  def test_print_name(self):
    self.class1.print_name()


if __name__ == '__main__':
  unittest.main()

 

# -*- encoding=utf-8 -*-

import unittest
from Test_Demo2 import CallClass1

if __name__ == '__main__':
  testSuite = unittest.TestSuite()
  testSuite.addTest(CallClass1('test_set_name'))

  testSuite.addTests(
    [CallClass1('test_set_name'), CallClass1('test_print_name')])

  textTestRunner = unittest.TextTestRunner()
  textTestRunner.run(testSuite)

運行結(jié)果

調(diào)用 Class1 初始化函數(shù)

Class1 的姓名是:設置了名字

調(diào)用 Class1 初始化函數(shù)

Class1 的姓名是:設置了名字

調(diào)用 Class1 初始化函數(shù)

Class1 的姓名是:未定義姓名

...

----------------------------------------------------------------------

Ran 3 tests in 0.000s

OK

Process finished with exit code 0

記錄測試報告到txt文件

# -*- encoding=utf-8 -*-

import unittest
from Test_Demo2 import CallClass1

if __name__ == '__main__':
  testSuite = unittest.TestSuite()
  testSuite.addTest(CallClass1('test_set_name'))

  testSuite.addTests(
    [CallClass1('test_set_name'), CallClass1('test_print_name')])

  # textTestRunner = unittest.TextTestRunner()
  # textTestRunner.run(testSuite)

  # 將測試結(jié)果輸出到測試報告中
  with open('UnittestTextReport.txt', 'w') as f:
    runner = unittest.TextTestRunner(stream=f, verbosity=2)
    runner.run(testSuite)

記錄測試報告到html文件

# 將測試結(jié)果輸出到測試報告html中
with open('HTMLReport.html', 'w') as f:
  runner = HTMLTestRunner(stream=f,
              title='MathFunc Test Report',
              description='generated by HTMLTestRunner.',
              verbosity=2
              )
  runner.run(suite)

斷言

當斷言為真時,會執(zhí)行斷言之后的代碼如(在斷言之后打印成功提示信息)

若斷言為假,則之后的代碼不會被執(zhí)行,打應錯誤信息,之后提示信息不會被執(zhí)行;unittest中提示F,失敗,若捕獲到異常,則為E,代表錯誤;

補充:若斷言為假,則當前函數(shù)def,停止運行,但會運行之后的def函數(shù)

重點:try語句塊中不要使用assert一起使用,assert斷言為假時,會拋出異常,測試用例為失敗,如果放到try中,則會捕獲到異常,測試用例永遠標記為通過

斷言結(jié)果:

. 表示通過 或者 pass

F False, 表示斷言沒有通過

E Error, 表示程序內(nèi)部發(fā)生了錯誤。

查找當前目錄下所有的測試用例【默認以test開頭的py文件,可以自己配置】

# -*- encoding=utf-8 -*-

import unittest
import os

if __name__ == '__main__':
  loader = unittest.defaultTestLoader.discover(os.getcwd())
  # tests = unittest.defaultTestLoader.discover(
  #   start_dir='.', # => 指定查找的目錄
  #   pattern='test*.py' # => 指定查找規(guī)則
  # )
  runner = unittest.TextTestRunner()
  runner.run(loader)

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Pytorch 中net.train 和 net.eval的使用說明

    Pytorch 中net.train 和 net.eval的使用說明

    這篇文章主要介紹了Pytorch 中net.train 和 net.eval的使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python CVXOPT模塊安裝及使用解析

    Python CVXOPT模塊安裝及使用解析

    這篇文章主要介紹了Python CVXOPT模塊安裝及使用解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • Python實現(xiàn)的一個自動售飲料程序代碼分享

    Python實現(xiàn)的一個自動售飲料程序代碼分享

    這篇文章主要介紹了Python實現(xiàn)的一個自動售飲料程序代碼分享,就是用python實現(xiàn)的生活中一種投幣式自動售飲料機的內(nèi)部程序判斷代碼,需要的朋友可以參考下
    2014-08-08
  • Python服務器創(chuàng)建虛擬環(huán)境跑代碼

    Python服務器創(chuàng)建虛擬環(huán)境跑代碼

    本文主要介紹了Python服務器創(chuàng)建虛擬環(huán)境跑代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • 解決pycharm 遠程調(diào)試 上傳 helpers 卡住的問題

    解決pycharm 遠程調(diào)試 上傳 helpers 卡住的問題

    今天小編就為大家分享一篇解決pycharm 遠程調(diào)試 上傳 helpers 卡住的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 詳解Python中的文件操作

    詳解Python中的文件操作

    這篇文章主要介紹了Python中文件操作的相關資料,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2021-01-01
  • python3調(diào)用R的示例代碼

    python3調(diào)用R的示例代碼

    本篇文章主要介紹了python3調(diào)用R的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Python基于回溯法子集樹模板實現(xiàn)8皇后問題

    Python基于回溯法子集樹模板實現(xiàn)8皇后問題

    這篇文章主要介紹了Python基于回溯法子集樹模板實現(xiàn)8皇后問題,簡單說明了8皇后問題的原理并結(jié)合實例形式分析了Python回溯法子集樹模板解決8皇后問題的具體實現(xiàn)技巧,需要的朋友可以參考下
    2017-09-09
  • Python利用pandas和matplotlib實現(xiàn)繪制圓環(huán)圖

    Python利用pandas和matplotlib實現(xiàn)繪制圓環(huán)圖

    在可視化的過程中,圓環(huán)圖是一種常用的方式,特別適合于展示各類別占比情況,本文將介紹如何使用 Python中的 pandas 和 matplotlib 庫,來制作一個店鋪銷量占比的圓環(huán)圖,需要的可以參考下
    2023-11-11
  • 基于MSELoss()與CrossEntropyLoss()的區(qū)別詳解

    基于MSELoss()與CrossEntropyLoss()的區(qū)別詳解

    今天小編就為大家分享一篇基于MSELoss()與CrossEntropyLoss()的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01

最新評論