美文网首页测试基础课
python接口依赖用例设计

python接口依赖用例设计

作者: 小娟_bb93 | 来源:发表于2019-05-20 16:35 被阅读22次

    接口依赖设计思路

    由于app需要登录才能浏览其它页面,所以想要请求其它接口必须先请求登录接口,将返回的用户信息及token作为变量参数入参。更多的业务流程之前同样需要依赖上一层接口返回的数据作为入参。
    因此,设计接口依赖的自动化用例大体思路如下:
    初始化一个session会话对象,使用session会话对象请求登录接口,将登录返回的用户信息及token作为入参,请求其它接口。关键点:session会话对象贯穿于整个请求业务流程中。

    接口依赖代码实现

    1. 登录

    创建一个登录类,包含init方法初始化一个变量s,和登录方法,使用s发送登录请求。

    class login():
    def __init__(self, s):
    
        self.s = s        # 此步是初始化一个session对象,以为后面进行接口测试时调用
    
    # 外部顾问登录
    def outside_consultants_login(self, uri):
        url = uri + "/login/newLogin"
    
        data = {"type": ,
                "acount": "",
                "password": ""}
        headers = {
            'platform': "",
            'uuid': ""
        }
        response = self.s.post(url, data=data, headers=headers)   # 使用s调用登录请求接口
        data = response.json()
        return data  # 返回用户信息
    

    2. 定义依赖接口

    定义依赖接口,传入参数s以及该接口所需参数(以形参方式传入)。

    import requests
    import json
    from lib.login import *
    
    def get_rob_resources_list(s, uri, token, memberid, platform):   # 参数中传入s,以及该接口需要其它参数
        url = "/rob/getRobResources"
        headers = {
        "platform": platform,
        "token": token,
        "memberId": memberid
         }
         response = s.post(url=uri + url, headers=headers)   # 使用s发送请求
         result = response.json()
         return result   # 返回结果供其它接口调用
    

    3. 测试目标接口

    测试目标接口,创建一个测试类继续unittest.TestCase。实例化session会话对象,s = requests.session(),实例化其它参数,进行目标接口测试前环境准备。请求目标接口,打印请求头及响应信息。

    import unittest
    import requests
    import jsonpath
    from rob_order.get_rob_resources_list import get_rob_resources_list
    from lib.login import *
    from lib.smart_counselor_db import *
    from data import data
    
    class TestRob(unittest.TestCase):
          s = requests.session()   # 实例化session会话对象
          uri = data.baseUrl
          platform = data.platform
    
    @classmethod
    def setUpClass(cls):
        # 初始化会话对象
        cls.a = login(cls.s)
        # 登录用户
        aa = cls.a.outside_consultants_login(cls.uri)
        cls.token = aa['body']['token']
        cls.memberid = aa['body']['memberid']
        # 抢单列表
        rob_list = get_rob_resources_list(cls.s, cls.uri, cls.token, cls.memberid, cls.platform)
        # print(rob_list)
        cls.logId = jsonpath.jsonpath(rob_list, '$.body.data.list[*].logId')
        cls.resourceId = jsonpath.jsonpath(rob_list, '$.body.data.list[*].resourceId')
        # 创建数据库连接
        cls.conn = get_smart_counselor_db_connect()
    
    def test_rob_resource(self):
        # 环境准备-检查数据库是否有该账号数据
        USER = self.memberid
        query_sql = "SELECT * FROM rob_resource_detail WHERE member_id = '{}' ".format(USER)
        delete_sql = "DELETE FROM rob_resource_detail WHERE member_id = '{}'".format(USER)
        conn = self.conn
        result = query_db(query_sql)
        if result:
            change_db(delete_sql)
    
        # 请求及响应
        url = "/rob/robResource"
        headers = {
            'platform': "3",
            'token': self.token,
            'memberId': self.memberid
        }
        data = {
            "logId": self.logId[-1],
            "resourceId": self.resourceId[-1]
        }
        response = requests.post(url=self.uri+url, headers=headers, data=data)
    
        logging.info("请求url:{0},请求头{1},请求体{2}".format(url, headers, data))
        logging.info("响应体:"+response.text)
    

    备注:
    本文是学习过程中记录下来的笔记,在此之前曾经尝试过多种方法,未能更好的实现却出现代码冗余且问题层出不穷。 无奈请求各路大神,终得一位大神指教,并写出实例供参考。此文正是按照大神提供的思路实出的用例实例。在此,对在学习路上一直耐心提供指导帮助的大神们表示深深地感谢,我本是一个菜鸟,学习的路上坚苦而乏味,因为有大神们的帮助,使用学习变得不再孤单并且乐在其中,再次感谢~

    相关文章

      网友评论

        本文标题:python接口依赖用例设计

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