天天看點

Python單元測試

#單元測試
import unittest
def get_formatted_name(first,laster):
    a = first + " " + laster
    return a

class NamesTestCase(unittest.TestCase): #繼承測試類
    '''測試name_function.py'''
    
    def setUp(self):
        '''這裡填寫公用的調用類,後面直接進行測試即可'''

    def test_first_last_name(self): #test打頭自動運作
        '''能否處理'''
        formatted_name = get_formatted_name('zhang','san')
        self.assertEqual(formatted_name,'zhang san') #斷言方法,進行輸出值比對

unittest.main()

assertEqual(a, b) 核實a == b
assertNotEqual(a, b) 核實a != b
assertTrue(x) 核實x為True
assertFalse(x) 核實x為False
assertIn(item, list) 核實item在list中
assertNotIn(item, list) 核實item不在list中

#虛拟環境
mkdir learing_log
python3 -m venv ll_env #建立
source ll_env/bin/activate #啟用環境
deactivate #關閉環境

#Django
pip install Django #安裝
django-admin.py startproject learning_log . #建立新項目
ls learning_log #檢視項目檔案
	settings.py #指定Django如何與你的系統互動以及如何管理項目
	urls.py #django應該建立哪些網頁響應請求
	wsgi.py #幫助Django提供它建立的檔案
python3 manage.py migrate #安裝sqlite3
python3 manage.py  runserver 0.0.0.0:8000 #啟動程式
python3 manage.py startapp learning_logs #建立一個應用
	models.py #定義套在應用程式中管理的資料
	admin.py #
	views.py #


#修改資料庫安裝版本
vim ll_env/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py

class Topic(models.Model):
    text = models.CharField(max_length=200) #最多存儲200字元
    date_added = models.DateTimeField(auto_now_add=True) #記錄日期和時間

    def __str__(self):
        return self.text #預設用哪個來傳回資訊

#應用,INSTALLED_PASS,新的要加最後面
learning_log/settings.py

python3 manage.py makemigrations learning_logs #和app建立資料關系,寫出一個修改腳本
python3 manage.py migrate #執行這個修改腳本

python3 manage.py createsuperuser #建立超級使用者,輸入使用者名,郵箱,2次密碼



#子產品
from random import choice
choice(name) #随機傳回name這個清單中的一個内容

from collections import Counter #計數器
name = ['xx','a','xx']
number = Counter(name) #傳回字典,鍵值還有重複次數
number.most_commont() #降序排列
number.most_commont() #該數字前一個元素
name + one #将2個計數器合起來
name - one #第一有的,而第二個沒有的
name & one #交集
name | one #并集,類似合并,但數值不疊加,隻選取較大值

from collections import OrderedDict #有序字典
quotes = OrderedDict([
    ('Moe', 'A wise guy, huh?'),
    ('Larry', 'Ow!'),
    ('Curly', 'Nyuk nyuk!'),
    ])

def palindrome(word): #雙端隊列,兩邊要一緻,例子是回文
    from collections import deque
    dq = deque(word)
    while len(dq) > 1:
        if dq.popleft() != dq.pop():
        return False
    return True
palindrome('aba')
#return word == word[::-1] #迅速判斷回文

import itertools
for i in itertools.chain([1,2],['a','b']) #隻疊代單個
for i in itertools.cycle([1,2]) #循環疊代,一緻重複
for i in itertools.accumulate([1,2,3]) #輸出挨個的疊加值

def multiply(a, b):
    return a * b
for item in itertools.accumulate([1, 2, 3, 4], multiply): #可以調入函數,做乘機

#子產品位置
import sys
for i in sys.path:
    print(i)


#二進制讀寫
bdata = bytes(range(0, 256))
fout = open('bfile', 'wb')
fout.write(bdata)
fout.close()

#自動關閉
with open('relativity', 'wt') as fout:
	fout.write(poem)

#
fin.tell() #檔案目前讀取位置到開頭距離
fin.seek(255) #跳轉到某個位置
xx = fin.read() #然後繼續讀後面的

seek(offset,origin)
如果origin等于0(預設為 0),從開頭偏移offset個位元組
如果origin等于1,從目前位置處偏移offset個位元組
如果origin等于2,距離最後結尾處偏移offset個位元組

fin.seek(-1,2) #檔案結尾前一個位元組
fin.seek(254, 0) #傳回最後2個位元組
fin.seek(1, 1) #前進一個位元組






python -m http.server #最簡單web伺服器


os.getpid() #目前腳本的程序号
os.getuid() #目前使用者id
os.getgid() #目前使用者組id

import subprocess
ret = subprocess.getoutput('date') #擷取指令的輸出
ret = subprocess.check_output(['date', '-u']) #接受一個指令和參數清單,傳回位元組類型标準輸出
ret = subprocess.getstatusoutput('date') #擷取退出狀态,傳回元祖
ret = subprocess.call('date') #隻要退出狀态
ret = subprocess.call('date -u', shell=True) #執行shell指令
ret = subprocess.call(['date', '-u']) #傳入參數清單,不調用shell

#簡單列印
import multiprocessing
import os

def do_this(what):
	whoami(what)

def whoami(what):
	print("Process %s says: %s" % (os.getpid(), what))

if __name__ == "__main__":
	whoami("I'm the main program")
	for n in range(4):
		p = multiprocessing.Process(target=do_this,
			args=("I'm function %s" % n,))
		p.start()

#終止程序模拟
import multiprocessing
import time
import os

def whoami(name):
	print("I'm %s, in process %s" % (name, os.getpid()))

def loopy(name):
	whoami(name)
	start = 1
	stop = 1000000
	for num in range(start, stop):
		print("\tNumber %s of %s. Honk!" % (num, stop))
		time.sleep(1)

if __name__ == "__main__":
	whoami("main")
	p = multiprocessing.Process(target=loopy, args=("loopy",))
	p.start()
	time.sleep(5)
	p.terminate()


import calendar
calendar.isleap(1900) #檢測是否是閏年


from datetime import date
halloween = date(2014, 10, 31)
halloween
halloween.day
halloween.month
halloween.year

halloween.isoformat() #列印時間


from datetime import date
now = date.today() #顯示進日期,傳回元祖

from datetime import timedelta
one_day = timedelta(days=1)
tomorrow = now + one_day
tomorrow
now + 17*one_day
yesterday = now - one_day
yesterday

from datetime import time #一天中的時間
noon = time(12, 0, 0)
noon
datetime.time(12, 0)
noon.hour
noon.minute
noon.second
noon.microsecond


def washer(dishes, output):
	for dish in dishes:
		print('Washing', dish, 'dish')
		output.put(dish)

def dryer(input):
	while True:
		dish = input.get()
		print('Drying', dish, 'dish')
		input.task_done()

dish_queue = mp.JoinableQueue()
dryer_proc = mp.Process(target=dryer, args=(dish_queue,))
dryer_proc.daemon = True
dryer_proc.start()

dishes = ['salad', 'bread', 'entree', 'dessert']
washer(dishes, dish_queue)
dish_queue.join()
           

本文版權歸作者所有,歡迎轉載,請務必添加原文連結。

上一篇: Pythonweb采集