数据API 产品矩阵 案例 关于
掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务

基于 HttpRunner 的接口测试平台--HttpRunnerManager

基本组成:第一期还没有加入mock等服务(主要因为公司自己mock没用)主要由5大模块组成,项目管理、模块管理、接口管理、用例管理以及系统设置等,采用bootstrap+django+ajax技术栈,前后端交互都是通过ajax进行交互,沿用HttpRunner思想,用例管理有添加配置(对应config),添加用例(test),注意:和HttpRunner本身区别(一条用例只支持1个Test)但是可以通过include以 config>casename1>casename2 形式组装业务用例。

效果图:
1、首页:

2、添加模块页面:

3、添加配置:



4、添加用例(和添加config类似,只是增加几个编辑栏


):

HttpRunner调用:当然我们还是得熟悉HttpRunner的实现思路,不然我们也找不到合适的切入点修改代码,其中最核心的是把前端提交数据组装成yaml格式:

def load_case(path):
    parsed_request = {}
    request = {}
    testcase_lists = []

    for value in path:
        if value is not {}:
            key_name = str(value.keys())
            if 'keyvariables' in key_name:
                parsed_request.setdefault('variables', key_value_list(**value))
            elif 'keyheader' in key_name:
                parsed_request.setdefault('headers', key_value_dict(**value))
            elif 'keydata' in key_name:
                parsed_request.setdefault('data', key_value_dict(**value))
            elif 'keyextract' in key_name:
                parsed_request.setdefault('extract', key_value_list(**value))
            elif 'keyvalidate' in key_name:
                parsed_request.setdefault('validate', key_value_list(name='true', **value))
            elif 'case_name' in key_name:
                parsed_request['name'] = value.pop('case_name')
            elif 'DataType' in key_name:
                parsed_request['data_type'] = value.pop('DataType')
            elif 'method' in key_name:
                request['method'] = value.pop('method')
            elif 'url' in key_name:
                request['url'] = value.pop('url')

    if 'data' in parsed_request.keys():
        data_type = parsed_request.pop('data_type')
        request.setdefault(data_type, parsed_request.pop('data'))

    parsed_request.setdefault('request', request)
    testcase_lists.append({'test': parsed_request})
    return testcase_lists

有了此转换方法,我们只需要调用即可:

def load_test_file(file_path):
    """ load testset file, get testset data structure.
    @param file_path: absolute valid testset file path
    @return testset dict
        {
            "name": "desc1",
            "config": {},
            "api": {},
            "testcases": [testcase11, testcase12]
        }
    """
    testset = {
        "name": "",
        "config": {
            "path": ''
        },
        "api": {},
        "testcases": []
    }
    tests_list = load_case(file_path)#将此处加载yml函数替换为刚才load_case函数即可

    for item in tests_list:
        for key in item:
            if key == "config":
                testset["config"].update(item["config"])
                testset["name"] = item["config"].get("name", "")

            elif key == "test":
                test_block_dict = item["test"]
                if "api" in test_block_dict:
                    ref_name = test_block_dict["api"]
                    test_info = get_testinfo_by_reference(ref_name, "api")
                    test_block_dict.update(test_info)
                    testset["testcases"].append(test_block_dict)
                elif "suite" in test_block_dict:
                    ref_name = test_block_dict["suite"]
                    test_info = get_testinfo_by_reference(ref_name, "suite")
                    testset["testcases"].extend(test_info["testcases"])
                else:
                    testset["testcases"].append(test_block_dict)

            elif key == "api":
                api_def = item["api"].pop("def")
                function_meta = parse_function(api_def)
                func_name = function_meta["func_name"]

                api_info = {}
                api_info["function_meta"] = function_meta
                api_info.update(item["api"])
                testset["api"][func_name] = api_info

    return testset

结束语:第一次发这种技术帖子,文笔比较low,因为功能还不完善,现在任务比较重,待空闲之时一定抓紧时间开发,争取早点开源,希望大家多多提出建议,在论坛上学习到很多,感谢大家的无私奉献精神,同时再次感谢@debugtalk,由于引用到HttpRunner代码,希望能得到谅解

原文来自:TesterHome

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务
基于 HttpRunner 的接口测试平台--HttpRunnerManager
发布:2018-01-08 12:09:22

基本组成:第一期还没有加入mock等服务(主要因为公司自己mock没用)主要由5大模块组成,项目管理、模块管理、接口管理、用例管理以及系统设置等,采用bootstrap+django+ajax技术栈,前后端交互都是通过ajax进行交互,沿用HttpRunner思想,用例管理有添加配置(对应config),添加用例(test),注意:和HttpRunner本身区别(一条用例只支持1个Test)但是可以通过include以 config>casename1>casename2 形式组装业务用例。

效果图:
1、首页:

2、添加模块页面:

3、添加配置:



4、添加用例(和添加config类似,只是增加几个编辑栏


):

HttpRunner调用:当然我们还是得熟悉HttpRunner的实现思路,不然我们也找不到合适的切入点修改代码,其中最核心的是把前端提交数据组装成yaml格式:

def load_case(path):
    parsed_request = {}
    request = {}
    testcase_lists = []

    for value in path:
        if value is not {}:
            key_name = str(value.keys())
            if 'keyvariables' in key_name:
                parsed_request.setdefault('variables', key_value_list(**value))
            elif 'keyheader' in key_name:
                parsed_request.setdefault('headers', key_value_dict(**value))
            elif 'keydata' in key_name:
                parsed_request.setdefault('data', key_value_dict(**value))
            elif 'keyextract' in key_name:
                parsed_request.setdefault('extract', key_value_list(**value))
            elif 'keyvalidate' in key_name:
                parsed_request.setdefault('validate', key_value_list(name='true', **value))
            elif 'case_name' in key_name:
                parsed_request['name'] = value.pop('case_name')
            elif 'DataType' in key_name:
                parsed_request['data_type'] = value.pop('DataType')
            elif 'method' in key_name:
                request['method'] = value.pop('method')
            elif 'url' in key_name:
                request['url'] = value.pop('url')

    if 'data' in parsed_request.keys():
        data_type = parsed_request.pop('data_type')
        request.setdefault(data_type, parsed_request.pop('data'))

    parsed_request.setdefault('request', request)
    testcase_lists.append({'test': parsed_request})
    return testcase_lists

有了此转换方法,我们只需要调用即可:

def load_test_file(file_path):
    """ load testset file, get testset data structure.
    @param file_path: absolute valid testset file path
    @return testset dict
        {
            "name": "desc1",
            "config": {},
            "api": {},
            "testcases": [testcase11, testcase12]
        }
    """
    testset = {
        "name": "",
        "config": {
            "path": ''
        },
        "api": {},
        "testcases": []
    }
    tests_list = load_case(file_path)#将此处加载yml函数替换为刚才load_case函数即可

    for item in tests_list:
        for key in item:
            if key == "config":
                testset["config"].update(item["config"])
                testset["name"] = item["config"].get("name", "")

            elif key == "test":
                test_block_dict = item["test"]
                if "api" in test_block_dict:
                    ref_name = test_block_dict["api"]
                    test_info = get_testinfo_by_reference(ref_name, "api")
                    test_block_dict.update(test_info)
                    testset["testcases"].append(test_block_dict)
                elif "suite" in test_block_dict:
                    ref_name = test_block_dict["suite"]
                    test_info = get_testinfo_by_reference(ref_name, "suite")
                    testset["testcases"].extend(test_info["testcases"])
                else:
                    testset["testcases"].append(test_block_dict)

            elif key == "api":
                api_def = item["api"].pop("def")
                function_meta = parse_function(api_def)
                func_name = function_meta["func_name"]

                api_info = {}
                api_info["function_meta"] = function_meta
                api_info.update(item["api"])
                testset["api"][func_name] = api_info

    return testset

结束语:第一次发这种技术帖子,文笔比较low,因为功能还不完善,现在任务比较重,待空闲之时一定抓紧时间开发,争取早点开源,希望大家多多提出建议,在论坛上学习到很多,感谢大家的无私奉献精神,同时再次感谢@debugtalk,由于引用到HttpRunner代码,希望能得到谅解

原文来自:TesterHome

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

选择想要的接口, 看看能免费获取多少次调用 选择(单选)或填写想要的接口
  • 短信API服务
  • 银行卡四元素检测[简]
  • 身份证实名认证
  • 手机状态查询
  • 三网手机实名制认证[简]
  • 身份证OCR识别
  • 证件识别
  • 企业工商信息
短信API服务
  • 短信API服务
  • 银行卡四元素检测[简]
  • 身份证实名认证
  • 手机状态查询
  • 三网手机实名制认证[简]
  • 身份证OCR识别
  • 证件识别
  • 企业工商信息
  • 确定
选择您的身份
请选择寻找接口的目的
预计每月调用量
请选择预计每月调用量
产品研发的阶段
请选择产品研发的阶段
×

前往领取
电话 0512-88869195
×
企业用户认证,
可获得1000次免费调用
注册登录 > 企业账户认证 > 领取接口包
企业用户认证领取接口包 立即领取
× 企业用户认证,
可获得1000次免费调用,立即领取>
数 据 驱 动 未 来
Data Drives The Future