程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Python >> 學習Python的第一課(簡單的單元測試)

學習Python的第一課(簡單的單元測試)

編輯:Python

由於有C#開發基礎,感覺學習Python應該不難,主要是一些語法了,再加上現在互聯網這麼發達。

感覺還是要有思路,否則學什麼也只能是什麼。 話不多說,簡單發下這幾天的學習成果吧;

第一次寫博客,大家不要見笑啊 簡單的語法就不多說了,隨便搜搜就可以得到。()

單元測試來了: 要做兩個測試:

# 用於判斷質數

import math

def isPrime(n):

  print ("驗證數字"+str(n)+"是否質數開始")

  print ("開平方:"+str(round(math.sqrt(n))))

  if(n<=1):

    return False;

  for i in range(2,round(math.sqrt(n))):

#只需要判斷到數的開平方數字即可

if(n % i==0): print (n/i)

return False;

return True;

# 用於判斷一個12位的數字,最後一位是前11位除以7的余模

def isBarcode(n): print ("驗證數字"+n+"是否符合規則開始")

  if(len(n)!=12):

    return False;

  ncount=int(n[0:11])#利用了正則表達式取前11位

  endNumber=int(n[-1]) #利用了正則表達式取最後1位

  print (ncount)

  print (endNumber)

  if(endNumber==ncount % 7):

    return True;

  else:

    print (ncount % 7)

  return False;

#這個文件保存為count.py。(名字隨便起的了)

#下面開始驗證 #保存為test.py

from count import isBarcode

from count import isPrime

import unittest

class Test(unittest.TestCase):

  print ("--Test--")

  def setUp(self):

  print ("--start--")

  #先來兩個正確的號碼

  def test_case(self):

    self.assertTrue(isBarcode("126112611262"),"it is not Barcode")

    self.assertTrue(isPrime(157),"it is 質數")

  def tearDown(self):

    print ("--End--")

print ("測試一下看顯示在什麼位置")

if __name__=="__main__":

unittest.main()  

在代碼中我們看到有這樣的一句代碼:

if __name__=="__main__":

  unittest.main() 很有好奇的感覺,網上搜搜這是什麼意思,

見 http://www.cnblogs.com/xuxm2007/archive/2010/08/04/1792463.html,感謝這位仁兄 讀了幾遍,終於讀懂,果然很強! 說白了就是寫一些代碼,給自己用的,類似於private是不是?又擔任著模塊的入口(個人理解)。

看運行結果吧:

>>> ================================ RESTART ================================

>>> --unnitest:main模塊

--Test--

測試一下看顯示在什麼位置

--start--

驗證數字126112611262是否符合規則開始

12611261126

2 驗證數字157是否質數開始

開平方:13

--End-- .

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

Ran 1 test in 0.045s

OK

>>> #哈,說明驗證通過了! 但是不知道大家是不是發現多了一個字符串"

--unnitest:main模塊",這個是我自己加的了,開源的東西就是好,隨便玩;

就在C:\Python33\Lib\unittest下面的main.py增加了一行代碼:

from . import loader, runner

from .signals import installHandler

__unittest = True

print ("--unnitest:main模塊")#這是新增加的

##好了,我們做個出錯的單元測試吧,157改成156

結果就是這樣的了:

>>> ================================ RESTART ================================

>>> --unnitest:main模塊

--Test--

測試一下看顯示在什麼位置

--start--

驗證數字126112611262是否符合規則開始

12611261126

2

驗證數字156是否質數開始

開平方:12

78.0

--End--

F

======================================================================

FAIL: test_case (__main__.Test)

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

Traceback (most recent call last): File "C:\Python33\test.py", line 11, in test_case self.assertTrue(isPrime(156),"it is not 質數") AssertionError: False is not true : it is not 質數

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

Ran 1 test in 0.052s FAILED (failures=1)

>>> #出錯了!!!!!!!!156不是個質數啊;再來一次:這次把126112611262換成126112611261,156保持不變

>>> ================================ RESTART ================================

>>>

--unnitest:main模塊

--Test--

測試一下看顯示在什麼位置

--start--

驗證數字126112611261是否符合規則開始

12611261126

1

2

--End--

F

======================================================================

FAIL: test_case (__main__.Test)

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

Traceback (most recent call last): File "C:\Python33\test.py", line 10, in test_case self.assertTrue(isBarcode("126112611261"),"it is not Barcode") AssertionError: False is not true : it is not Barcode

##結束;呀呀呀,第一個提示之後第二個不執行啦?!(怎麼回事?,可以做2個單元測試嗎?求解)

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

Ran 1 test in 0.033s

FAILED (failures=1)

>>> #我用的IDLE (Python GUI),彈出提示比較慢,很多代碼還是手敲;不過我感覺這也是它的魅力吧

#感謝蟲師,正是參考了你的書才能模仿出這樣的代碼(關於selenium的),我學Python也是要做自動化測試(嘿嘿)

#很多東西還得進一步摸索,一些原理也不是很懂,還得加油!

#寫在C羅的葡萄牙進4強的當天,馬上就是比利時VS威爾士,希望貝爾可以和C羅來一場較量,哈哈。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved