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)#执行已添加好的测试套件
注:执行是按照,字母顺序和数字顺序
第一个接口的返回数据做为第二个接口的请求数据
import unittest import runmain class TestMethod1(unittest.TestCase): def setUp(self):#在第一个测试方法执行之前都要先执行这个方法 self.run = runmain() def tearDown(self):#每次执行之后都要执行这个方法 print "test--->tearDown" def test_01(self):#每个测试用例都要以test开头,不然不会执行 url ="htpp://www.baidu.com" data ={"name":"guo","passwd":"1234"} res = self.run.run_main(url,"post",data)#调用runmain类的run_main方法 self.assertEqual(res["errorCode"],10001,"测试失败") globals()["userid"]="1000909"#将userid设置为全局变量 def test_02(self): print userid #前面设置了全局变量,这里可以直接应用,要用第一个接口的返回值做为第二个接口的请求参数 url = "http://ww.baidu.com" data = {"name":"guo","password":"123456"} res = self.run.run_main(url,"get",data) self.assertEqual(res["errorCode"],1000,"测试失败")#用python方法判断 @unittest.skip("test_04")#设置需要跳过的用例 def test_04(self): print "haha" def test_03(self): print"jajaja" if __name__=="__main__": #unittest.main()#执行所有测试用例 suite = unittest.TestSuite()
注:设置一个全局变量,第二个接口可以直接使用