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()
posted @ 2019-11-15 15:37  一个老宅男  阅读(734)  评论(0编辑  收藏  举报