由於有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羅來一場較量,哈哈。