get \post 接口代码及断言编写
阅读原文时间:2023年07月09日阅读:1

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()
注:设置一个全局变量,第二个接口可以直接使用