接口測試學習-python第六課(異常處理/網絡編程)

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)
相關文章
相關標籤/搜索