1、異常處理html
在平時的代碼運行中,常常遇到報錯的狀況,一旦報錯,整個代碼都會被迫停止。若是代碼中包含一些必須結束的代碼,就會由於程序的出錯中斷而沒法結束。好比打開一個文件後是須要關閉的,連接數據庫後是須要關閉連接的,但是若是中途代碼出錯,這些關閉操做就不會被運行。python
爲了解決這種狀況,能夠用try將可能出錯的代碼包裹起來,並判斷這段代碼是否有異常,並根據判斷結果執行接下來的操做。此時即便代碼出錯,也不會中止運行。web
1 first = input('輸入被除數:') 2 second = input('輸入除數:') 3 try: # 用try將可能出錯的代碼包起來 4 first = int(first) 5 second = int(second) 6 res = first / second 7 except ValueError as e: # 這個e表明錯誤信息,若是上面兩行代碼出現了ValueError這個錯誤信息就提示出錯 8 print(e) 9 print('出錯了') 10 except ZeroDivisionError as e: # 若是出現了‘ZeroDivisionError’這個錯誤信息也進行提示 11 print(e) 12 print('除數不能爲0') 13 except Exception as e: # 能夠捕捉到全部的異常狀況 14 print(e) 15 print('出錯了') 16 else: # 沒有異常的時候 17 print('沒錯') 18 finally: # 無論是否出錯都會執行finally 19 print('我是finally')
2、網絡編程-接口測試數據庫
平時接口測試時通常藉助postman和jmeter等工具,根據接口文檔設定的url,入參和必填數據等進行測試。可是用python也能夠進行簡單的接口測試。python中有兩個模塊能夠進行接口測試,分別是urllib和requests。第一個模塊進行接口測試代碼比較複雜,在此只簡單介紹一下其進行get請求和post請求時如何操做。編程
一、urllib模塊進行接口測試json
1 from urllib import request,parse 2 import json 3 url = 'http://www.cnblogs.com/myyard777' # 地址必須以url開頭 4 req = request.urlopen(url) # 打開一個url 5 content = req.read().decode() 6 # 網絡爬蟲就是從其餘的網站上獲取一些有用的內容 7 fw = open('interweb.html','w',encoding='utf-8') 8 fw.write(content) 9 10 經過這個模塊完成get請求 11 url = 'http://api.nnzhp.cn/api/user/stu_info?stu_name=*******' 12 req = request.urlopen(url) 13 content = req.read().decode() 14 res_dic = json.loads(content) 15 if res_dic.get('error_code') == 0: 16 print('測試經過') 17 else: 18 print('測試失敗') 19 20 發post請求 21 url = 'http://api.*****.cn/api/user/login' 22 # data請求數據 23 data = { 24 'username':'*****', 25 'passwd':'********' 26 } 27 data = parse.urlencode(data) # 自動將參數拼好xx=xxx&**=*** 28 req = request.urlopen(url, data.encode()) # 必須將data變成二進制數據 29 print(req.read().decode())
二、requests模塊進行接口測試api
1 import requests 2 # 使用這個模塊發送get請求 3 url = 'http://api.nnzhp.cn/api/user/stu_info' 4 data = {'stu_name': '小黑'} # 請求數據 5 req = requests.get(url, params=data) # 發送get請求 6 print(req.json()) # 返回字典 7 print(req.text) # 返回string類型的json串 8 9 # 使用這個模塊發post請求 10 url = 'http://api.nnzhp.cn/api/user/login' 11 data = {'username': 'niuhanyang', 'passwd': 'aA123456'} 12 req = requests.post(url, data) # 發送post請求 13 print(req.json()) 14 15 # 入參是json類型的 16 import random 17 url = 'http://api.nnzhp.cn/api/user/add_stu' 18 phone = random.randint(10000000000, 99999999999) # 產生一個隨機的電話號碼 19 data ={ 20 "name": "xyz", 21 "grade": "天蠍座", 22 "phone": phone, 23 "sex": "男", 24 "age": 28, 25 "addr": "河南省濟源市北海大道32號" 26 } 27 req = requests.post(url, json=data) 28 print(req.json()) 29 30 # 須要添加cookie的請求 31 url = 'http://api.nnzhp.cn/api/user/gold_add' 32 data = {'stu_id': 468, 'gold': 100} 33 cookie = {'niuhanyang': '337ca4cc825302b3a8791ac7f9dc4bc6'} 34 req = requests.post(url, data, cookies=cookie) 35 print(req.json()) 36 37 # 添加header的請求 38 url = 'http://api.nnzhp.cn/api/user/all_stu' 39 header = {'Referer': 'http://api.nnzhp.cn/'} 40 req = requests.get(url, headers=header) 41 print(req.json()) 42 43 # 上傳文件 44 url = 'http://api.nnzhp.cn/api/file/file_upload' 45 # data = {'file': open('test.txt', encoding='utf-8')} # 若是上傳的是圖片,須要以'rb'模式打開 46 data = {'file': open(r'C:\Users\john\Downloads\工做\圖片\測試\1.jpg', 'rb')} 47 req = requests.post(url, files=data) 48 print(req.json()) 49 50 # 下載圖片(也能夠下載音樂,修改url和存儲格式便可) 51 url = 'http://www.nnzhp.cn/wp-content/uploads/2018/01/soup.jpg' 52 res = requests.get(url) 53 print(res.content) # 返回的是一個二進制內容 54 fw = open('s.jpg', 'wb') 55 fw.write(res.content)