美文网首页
14. 汇总、不分层的方式实现

14. 汇总、不分层的方式实现

作者: 薛东弗斯 | 来源:发表于2024-02-17 07:27 被阅读0次

汇总方式,可以省去api.py /api_util.py 但不建议,不方便后续维护

# project > core > rest_client.py
import requests
import json
from utils.read_test import base_data
from utils.log_util import logger

api_root_url = base_data.read_ini()['host']['api_sit_url']

class RestClient:
    def __init__(self):
        self.api_root_url = api_root_url
        self.session = requests.Session()

    def get(self, url, **kwargs):
        return self.request(url, "GET", **kwargs)

    def post(self, url, **kwargs):
        return self.request(url, "POST", **kwargs)

    def put(self, url, **kwargs):
        return self.request(url, "PUT", **kwargs)

    def delete(self, url, **kwargs):
        return self.request(url, "DELETE", **kwargs)

    def request(self, url, method, **kwargs):
        self.request_log(url, method, **kwargs)
        if method == "GET":
            return self.session.get(self.api_root_url + url, **kwargs)
        if method == "POST":
            return self.session.post(self.api_root_url + url, **kwargs)
        if method == "PUT":
            return self.session.put(self.api_root_url + url, **kwargs)
        if method == "DELETE":
            return self.session.delete(self.api_root_url + url, **kwargs)

    def request_log(self, url, method, **kwargs):
        data = dict(**kwargs).get("data")
        json_data = dict(**kwargs).get("json")
        params = dict(**kwargs).get("params")
        headers = dict(**kwargs).get("headers")
        logger.info("接口请求的地址>>>{}".format(self.api_root_url + url))
        logger.info("接口请求的方法>>>{}".format(method))
        if data is not None:
            logger.info("接口请求的data参数>>>\n{}".format(json.dumps(data, ensure_ascii=False, indent=2)))
        if json_data is not None:
            logger.info("接口请求的json参数>>>\n{}".format(json.dumps(json_data, ensure_ascii=False, indent=2)))
        if params is not None:
            logger.info("接口请求的params参数>>>\n{}".format(json.dumps(params, ensure_ascii=False, indent=2)))
        if headers is not None:
            logger.info("接口请求的headers参数>>>\n{}".format(json.dumps(headers, ensure_ascii=False, indent=2)))

Api = RestClient()
# project > test_cases > test_case_optimize > test_case_optimize.py
import pytest
from core.rest_client import Api
from utils.response_util import process_response
from api.api import mobile_query
from utils.read_test import base_data

url = base_data.read_ini()['host']['api_sit_url']


def test_mobile():
    param = base_data.read_data()["mobile"]
    # 只需要下面传入url即可。
    response = Api.get("/shouji/query",params=param)
    result = process_response(response)
 
    # result = mobile_query(param)
    assert result.success is True
    assert result.body['status'] == 0
    assert result.body['msg'] == "ok"
    assert result.body['result']["province"] == "浙江"
    assert result.body['result']["city"] == "杭州"
    assert result.body['result']["company"] == "中国移动"
    assert result.body['result']["cardtype"] is None
    assert result.body['result']["areacode"] == "0571"
#
if __name__ == '__main__':
    pytest.main()

相关文章

网友评论

      本文标题:14. 汇总、不分层的方式实现

      本文链接:https://www.haomeiwen.com/subject/izruadtx.html