unittest和requests重构封装

先写一个运行接口测试的主方法

import requests
import json

class RunMain:

    def send_get(self, url, data):
        res = requests.get(url=url, data=data).json()
        return json.dumps(res, indent=2, sort_keys=True)

    def send_post(self, url, data):
        res = requests.post(url=url, data=data).json()
        return json.dumps(res, indent=2, sort_keys=True)

    def run_main(self, url, method, data=None):
        res = None
        if method == 'GET':
            res = self.send_get(url, data)
        else:
            res = self.send_post(url, data)
        return res

如上只需传入对应参数调用此方法,那么我们如何将requests与unittest结合起来呢?
首先需要把对应模块导入进来

# manage需要导入的模块
from base.manage import RunMain

然后在unittest中实例化类,case中执行用例,传入参数执行

# coding:utf-8
import unittest
from base.manage import RunMain


class TestMethod(unittest.TestCase):

    def setUp(self):
       #实例化类
        self.run = RunMain()

    def test_01(self):
        url = 'https://tapi.eyxyt.net/parkopening/backstage/v1/mgr/login'
        data = {
            'mobile': '159*****455',
            'password': 'e10adc3949ba59abbe56e057f20f883e'
        }
        res = self.run.run_main(url, 'POST', data)
        print(res)

    def test_02(self):
        url = 'https://tapi.eyxyt.net/parkopening/backstage/v1/mgr/login'
        data = {
            'mobile': '159******456',
            'password': 'e10adc3949ba59abbe56e057f20f883e'
        }
        res = self.run.run_main(url, 'POST', data)
        print(res)

    if __name__ == '__main__':
        unittest.main()

运行结果:


运行结果.png

当执行case足够多的时候,我们要怎么去检查用例的返回结果是否正确?这就要用到unitest的assert了,
常用的assertEqual传入三个参入,第一个参数与第二的参数,第三个参数可以省略,第四个参数"如果第一、第二个参数不相等,则返回...."


assertEqual判断.png

如在case里面加上断言:

    def test_01(self):
        url = 'https://tapi.eyxyt.net/parkopening/backstage/v1/mgr/login'
        data = {
            'mobile': '159*****455',
            'password': 'e10adc3949ba59abbe56e057f20f883e'
        }
        res = self.run.run_main(url, 'POST', data)
        #将返回值转换为字典类型
        res_a=json.loads(res)
        self.assertEqual(res_a['code'],200,'测试失败')

备注:如果res_a['code'] !=200,则测试失败

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容