get post 接口代碼及斷言編寫
阿新 • • 發佈:2018-03-02
() OS pan __name__ 直接 需要 get 自己 字母
post 請求接口
import requests import json url_path = "http://www.baidu.com" data = {"username":"mushishi","password":"1234"} def send_post(url,data): res = requests.post(url=url_path,data = data) return res.json()#轉換成json格式 send_post(url_path,data)#調用函數直接傳入地址及參數
get 請求接口(把參數寫在地址後面的寫法)
url_path = "http://baidu.com?username=name&passwd=1234" data = {} def send_get(url): #res = requests.get(url=url_path).json()#把參數寫在地址後面的寫法 return json.dump(res,indent = 2,sort_keys=True)#格式化輸出 send_get(url_path)
get 請求接口
import requests import json url_path = "http://www.baidu.com" data = {"username":"mushishi","password":"1234"} def send_get(url,data): res = requests.get(url=url_path,data = data) return res.json()#轉換成json格式 send_get(url_path,data)#調用函數直接傳入地址及參數
把get 和post封裝到一個方法,要使用哪個就調用哪個
import requests import json def send_get(url,data): res = requests.get(url,data).json()return json.dump(res,index = 2,sorted_keys=True) def send_post(url,data): res = requests.post(url,data).json() return json.dumdp(res,index=2,sorted_keys=True) def run_main(url,method,data=None):#為了更好的使用get和post所以定data默認空值 res =None#先賦個空值,不管你調用哪個方法都會返回這個值 if method == "get" res == send_get(url,data) else: res == send_post(url,data) return res if __name__=="main": url = "http://www.baidu.com" data ={"cart":"11"}#有參就傳,沒參就用默認的 run_main(url,"get",data) run_main(url,"post",data) run_main(url,"get")
get 和post 方法封裝到類
import requests import json class RuanMain(): def __init__(self,url,method,data = None): self.res = self.run_main(url,method,data) def send_get(self,url,data): res = requests.get(url=url,data=data,).json() return json.dump(res,index = 2,sorted_keys=True) def send_post(self,url,data): res=requests.post(url=url,data=data).json() return json.dump(res,index=2,sorted_keys=True) if __name__=="__main__": url = "http://www.baidu.com" data={"cart:11"} run=RuanMain(url,"get",data) run.res
調用之前封裝的runmain類方法進行寫用例以及斷言
import unittest import runmain class TestMethod1(unittest.TestCase): @classmethod def setUpClass(cls):#固定取名,不能隨便取 print "類執行之前方法" @classmethod def tearDownClass(cls): print "類執行之後方法" def setUp(self):#在第一個測試方法執行之前都要先執行這個方法 run = runmain() def tearDown(self):#每次執行之後都要執行這個方法 print "test--->tearDown" def test_01(self):#每個測試用例都要以test開頭,不然不會執行 url ="htpp://www.baidu.com" data ={"name":"guo","passwd":"1234"} run = runmain() res = self.run.run_main(url,"post",data) if res["errorCode"]==1001:#用自己的方法判斷測試結果 print "測試通過" else: print "測試失敗" def test_02(self):#每個測試用例都要以test開頭,不然不會執行 url = "http://www.baidu.com" data = {"name":"guo","password":"123456"} res = self.run.run_main(url,"get",data) self.assertEqual(res["errorCode"],1000,"測試失敗")#用python方法判斷 if __name__=="__main__": unittest.main()#執行所有測試用例
unittest 過濾執行的用例
import unittest class _Baidu(unittest.TestCase): #@unittest.skip("test_01")#執行的時候過濾掉這個 def test_01(self): print "這是第一個用例" def test_02(self): print "這是第二個用" def test_04(self): print "這是第三個用例" def test_03(self): print "這是第四個用例" if __name__=="__main__": #unittest.main()#這是執行所有用例 suite = unittest.TestSuite() suite.addTest(_Baidu("test_03"))#把需要執行的用例添加到套件去 suite.addTest(_Baidu("test_01")) unittest.TextTestRunner().run(suite)#執行已添加好的測試套件
註:執行是按照,字母順序和數字順序
get \post 接口代碼及斷言編寫