• get post 接口代码及断言编写


    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()
    注:设置一个全局变量,第二个接口可以直接使用
  • 相关阅读:
    .Net/C# 应用程序直接读取本地 Cookies 文件(WinXP SP2 调用 API: InternetGetCookie 无果)
    wininet.dll函数库:不会过期的cookie
    WinForm中TextBox控件循环自动滚动示例
    JScript中Date.getTime转.Net中的DateTime
    js gettime c# ticks
    mysql查看整库个表详情
    rds分区实践
    mysql5.7.21源码安装
    EXPLAIN详解
    C#基础温习(4):C#中string数组和list的相互转换
  • 原文地址:https://www.cnblogs.com/guog1/p/8490689.html
Copyright © 2020-2023  润新知