• unittest管理接口用例


    1.unittest框架

    • 简单套入 unittest 框架
    import requests
    import unittest
    
    class TestApi(unittest.TestCase):
    
        def setUp(self):
            self.apiurl = "http://www.xxxxx.com/customer/login.html"
            self.header = {"Cookie": "mediav=%7B%22eid%22%3A%22470884%22%2C%22ep%22%3A%22%22%2C%22vid%22%3A%22%40-vC_Waqh_%3AU%234K75o%5B!%22%2C%22ctn%22%3A%22%22%7D"}
            self.timeout = 1
    
        def testlogin01(self):
            body = {"loginName":17779828888,"loginPwd":"zy123456"}
            response = requests.post(url=self.apiurl,data=body,headers=self.header,timeout=self.timeout)
            if response.json()["values"]["loginName"] == "17779828888":
                pass
            else:
                raise ValueError
    
        def testlogin02(self):
            body = {"loginName":17779828881,"loginPwd":"123456"}
            response = requests.post(url=self.apiurl,data=body,headers=self.header,timeout=self.timeout)
            if response.json()["errorMsg"] == u"用户或者密码错误":
                pass
            else:
                raise ValueError
    
        def testlogin03(self):
            body = {"loginName":17779828888,"loginPwd":"123443"}
            response = requests.post(url=self.apiurl,data=body,headers=self.header,timeout=self.timeout)
            if response.json()["errorMsg"] == u"用户或者密码错误":
                pass
            else:
                raise ValueError
    
        def testlogin04(self):
            body = {"loginName":"","loginPwd":"123443"}
            response = requests.post(url=self.apiurl,data=body,headers=self.header,timeout=self.timeout)
            if response.json()["errorMsg"] == u"用户名不能为空":
                pass
            else:
                raise ValueError
    
        def testlogin05(self):
            body = {"loginName":17779828888,"loginPwd":""}
            response = requests.post(url=self.apiurl,data=body,headers=self.header,timeout=self.timeout)
            if response.json()["errorMsg"] == u"用户密码不能为空":
                pass
            else:
                raise ValueError
    
    if __name__ == '__main__':
        unttest.main()
    •  在 @classmethod 装饰器中获取令牌校验信息
    import requests
    import unittest
    
    class ZSGX(unittest.TestCase):
    
        @classmethod
        def setUpClass(cls) -> None:
            """
            通过登录接口获取令牌JWT和用户uid,给到用例中的接口进行校验
            """
            print("Test start...")
            cls.url = "https://apipc.xinqgj.com/user/login"
            cls.headers = {"Content-Type": "application/json",
                           "YF-BID": "zwy",
                           "YF-JWT": "",
                           "YF-UID": "",
                           "YF-VER": "1.0.0"}
            cls.payload = {"phone": "17779828887",
                       "pwd": "GoKVE/vkgkmEyLIKeIAltopt9tx14BJ0dtEirmHm3iPMjDivvZBJHcZdqOWS7mqKXODJugJ+gFT7x/FCvUcpv1py7Vxeghu+r+u9I0dJT1xSAp5co7EIh2PS8bZog/k8AIsIXNIMnAgp68jke64Qz9nR9cOJix1wvmOTJMWnxu4xxxx=",
                       "validateCode": "m4ld", "encryptStr": "fdff60cf95e0eb8c78f6bb9e5cc0e208"}
    
            cls.res = requests.request("post", cls.url, headers=cls.headers, json=cls.payload)
            cls.JWT = cls.res.json().get("data").get("JWT")
            cls.uid = cls.res.json().get("data").get("user").get("uid")
    
        @classmethod
        def tearDownClass(cls) -> None:
            print("Test end...")
    
        def setUp(self) -> None:
            self.headers = {"Content-Type": "application/json",
                            "YF-BID": "zwy",
                            "YF-JWT": self.JWT,
                            "YF-UID": str(self.uid),
                            "YF-VER": "1.0.0"}
    
        def tearDown(self) -> None:
            pass
    
        def test_DelegateRecord01(self):
            """
            委托记录接口,检查所有的记录
            """
            self.url = "https://apipc.xinqgj.com/match/users/102299/coins/trusts/record?page=0&size=10&status=-1&beginTime=&endTime=&coin="
            res = requests.request("get",self.url,headers=self.headers)
            total = res.json().get("data").get("page").get("total")
            self.assertEqual(total,119,msg="DelegateRecord01 is error")
    
        def test_DelegateRecord02(self):
            """
            检查YXT的委托记录
            """
            self.url = "https://apipc.xinqgj.com/match/users/102299/coins/trusts/record?page=0&size=10&status=-1&beginTime=&endTime=&coin=YXT"
            res = requests.request("get",self.url,headers=self.headers)
            total = res.json().get("data").get("page").get("total")
            self.assertEqual(total,90,msg="DelegateRecord02 is error")
    
        def test_DelegateRecord03(self):
            """
            检查WLT的委托记录
            """
            self.url = "https://apipc.xinqgj.com/match/users/102299/coins/trusts/record?page=0&size=10&status=-1&beginTime=&endTime=&coin=WLT"
            res = requests.request("get",self.url,headers=self.headers)
            total = res.json().get("data").get("page").get("total")
            self.assertEqual(total,6,msg="DelegateRecord03 is error")
    
    
    if __name__ == '__main__':
        unittest.main()
    •  在 @classmethod 装饰器中获取 session 会话状态
    import requests
    import unittest
    
    class Cms(unittest.TestCase):
    
        @classmethod
        def setUpClass(cls) -> None:
            cls.session = requests.Session()  # 通过 session 保持会话
            print("... Start test ...")
    
        @classmethod
        def tearDownClass(cls) -> None:
            print("... End test ...")
    
        def testlogin(self):
            self.url = "http://192.168.1.110:8080/cms/manage/loginJump.do"
            self.header = {"Content-Type": "application/x-www-form-urlencoded"}
            self.parmas = {"userAccount": "admin", "loginPwd": "123456"}
            #通过全局 session 请求接口
            res = self.session.post(self.url, headers=self.header, data=self.parmas)
            self.assertEqual(res.json()["msg"],"登录成功!",msg="testlogin error!")
    
        def testqueryUserList(self):
            self.url = "http://192.168.1.110:8080/cms/manage/queryUserList.do"
            self.header = {"Content-Type": "application/x-www-form-urlencoded"}
            self.parmas = {"startCreateDate":"",
                      "endCreateDate":"",
                      "searchValue":"",
                      "page":"1"}
            # 通过全局 session 请求接口
            res = self.session.post(self.url, headers=self.header, data=self.parmas)
            self.assertEqual(res.json()["msg"],"查询用户成功!",msg="testqueryUserList error!")
    
    if __name__ == '__main__':
        unittest.main()

    2.生成测试报告

    import requests
    import unittest
    import HTMLTestRunner
    
    class TestApi(unittest.TestCase):
    
        def setUp(self):
            self.apiurl = "http://www.xxxxx.com/customer/login.html"
            self.header = {"Cookie": "mediav=%7B%22eid%22%3A%22470884%22%2C%22ep%22%3A%22%22%2C%22vid%22%3A%22%40-vC_Waqh_%3AU%234K75o%5B!%22%2C%22ctn%22%3A%22%22%7D"}
            self.timeout = 1
    
        def testlogin01(self):
            body = {"loginName":17779828888,"loginPwd":"zy123456"}
            response = requests.post(url=self.apiurl,data=body,headers=self.header,timeout=self.timeout)
            if response.json()["values"]["loginName"] == "17779828888":
                pass
            else:
                raise ValueError
    
        def testlogin02(self):
            body = {"loginName":17779828881,"loginPwd":"123456"}
            response = requests.post(url=self.apiurl,data=body,headers=self.header,timeout=self.timeout)
            if response.json()["errorMsg"] == u"用户或者密码错误":
                pass
            else:
                raise ValueError
    
        def testlogin03(self):
            body = {"loginName":17779828888,"loginPwd":"123443"}
            response = requests.post(url=self.apiurl,data=body,headers=self.header,timeout=self.timeout)
            if response.json()["errorMsg"] == u"用户或者密码错误":
                pass
            else:
                raise ValueError
    
        def testlogin04(self):
            body = {"loginName":"","loginPwd":"123443"}
            response = requests.post(url=self.apiurl,data=body,headers=self.header,timeout=self.timeout)
            if response.json()["errorMsg"] == u"用户名不能为空":
                pass
            else:
                raise ValueError
    
        def testlogin05(self):
            body = {"loginName":17779828888,"loginPwd":""}
            response = requests.post(url=self.apiurl,data=body,headers=self.header,timeout=self.timeout)
            if response.json()["errorMsg"] == u"用户密码不能为空":
                pass
            else:
                raise ValueError
    
    if __name__ == '__main__':
        suit = unittest.TestSuite()
        testcases = [TestApi("testlogin01"),TestApi("testlogin02"),TestApi("testlogin03"),
                     TestApi("testlogin04"),TestApi("testlogin05")]
        suit.addTests(testcases)
        dir = "D:\testapi.html"
        path = open(dir,"wb")
        runner = HTMLTestRunner.HTMLTestRunner(stream=path,title="TestReport",description="TestDesc")
        runner.run(suit)
        path.close()

    3.断言

    • if ... else ...  如上代码
    • try ... except ...
    import requests
    import unittest
    
    class TestApi(unittest.TestCase):
    
        def setUp(self):
            self.apiurl = "http://www.xxxx.com/customer/login.html"
            self.header = {"Cookie": "mediav=%7B%22eid%22%3A%22470884%22%2C%22ep%22%3A%22%22%2C%22vid%22%3A%22%40-vC_Waqh_%3AU%234K75o%5B!%22%2C%22ctn%22%3A%22%22%7D"}
            self.timeout = 1
    
        def testlogin01(self):
            body = {"loginName":17779828888,"loginPwd":"zy295240???"}
            response = requests.post(url=self.apiurl,data=body,headers=self.header,timeout=self.timeout)
            try:
                result = response.json()["values"]["loginName"]
                if result == "17779828888":
                    pass
                else:
                    raise ValueError
            except:
                print ("testlogin01 error!")
            else:
                print ("testlogin01 ok!")
    
    if __name__ == '__main__':
        unittest.main()
    • unttest 中 assert断言方式
    import requests
    import unittestclass TestApi(unittest.TestCase):
    
        def setUp(self):
            self.apiurl = "http://www.xxxx.com/customer/login.html"
            self.header = {"Cookie": "mediav=%7B%22eid%22%3A%22470884%22%2C%22ep%22%3A%22%22%2C%22vid%22%3A%22%40-vC_Waqh_%3AU%234K75o%5B!%22%2C%22ctn%22%3A%22%22%7D; "}
            self.timeout = 1
    
        def testlogin01(self):
            body = {"loginName":17779828888,"loginPwd":"zy123456"}
            response = requests.post(url=self.apiurl,data=body,headers=self.header,timeout=self.timeout)
            phone = response.json()["values"]["loginName"]
            self.assertEqual(phone,"17779828888",msg="testlogin01 error!")
    
        def testlogin02(self):
            body = {"loginName":17779828881,"loginPwd":"zy123456"}
            response = requests.post(url=self.apiurl,data=body,headers=self.header,timeout=self.timeout)
            errorMsg =  response.json()["errorMsg"]
            self.assertNotEqual(errorMsg,u"成功",msg="testlogin02 error!")
    
        def testlogin03(self):
            body = {"loginName":17779828888,"loginPwd":"123443"}
            response = requests.post(url=self.apiurl,data=body,headers=self.header,timeout=self.timeout)
            errorMsg =  response.json()["errorMsg"]
            self.assertIn(u"密码错误",errorMsg,msg="testlogin03 error!")
    
        def testlogin04(self):
            body = {"loginName":"","loginPwd":"123443"}
            response = requests.post(url=self.apiurl,data=body,headers=self.header,timeout=self.timeout)
            errorMsg =  response.json()["errorMsg"]
            self.assertNotIn(u"密码错误",errorMsg,msg="testlogin04 error!")
    
    if __name__ == '__main__':
        unittest.main()
  • 相关阅读:
    java开发——Cloneable接口、clone()方法和深浅拷贝
    intellij idea 显示Arraylist 扩容过程 解决not showing null elements
    ArrayList的扩容方式和扩容时机
    【laravel5.4】发送alisms短信和163邮箱
    【laravel5.4】重定向带参数
    【laravel5.4】vue分页删除
    【laravel5.4】Baum无限极分类和collect助手函数、transform()中间件(转换数据)方法使用
    【laravel5.4】使用baum ode 类库实现无限极分类
    【VUE+laravel5.4】vue给http请求 添加请求头数据
    【laravel5.4】关键字【use】使用
  • 原文地址:https://www.cnblogs.com/ZhengYing0813/p/11867074.html
Copyright © 2020-2023  润新知