zoukankan      html  css  js  c++  java
  • 【自动化测试中的自定义函数支持】方案+踩坑

    自动化测试(包括其他平台),可能需要不同业务实现不同得处理逻辑,所以必须留一个口子,给不同得同学上传他自己实现得py文件,并且能执行能调用到他自己定义得函数。

    方案:自己实现得脚本遵从固定得格式,上传到指定得包路径下,然后根据上传的文件名进行调用

    a、脚本格式,如下,比如():

    
    
    import time,json
    import requests
    import pymongo
    import datetime
    import hashlib
    '''
    tool_name 表示工具的名称,用于前端展示
    paras 表示参数列表 每个参数 key表示形参名,show是页面展示的名字,desc是用户将鼠标放上去之后的说明,type表示html控件类型,表示工具的名称,用于前端展示
    is_optional表示是否是可选项,默认都是必须的
    results 表示返回结果项目

    目前需要的控件类型与数据类型映射
    input---字符串
    select---字符串
    checkbox---数组
    radio---字符串
    '''
    tool_name = "XXXX工具"

    input_params = [
    {"key" : "env" , "show" : "环境" , "type" : "select" ,"value" : [{"text" : "sit" , "value" : "sit"} ,
    {"text" : "uat" , "value" : "uat"},{"text":"dev","value":"dev"}]},
    {"key" : "id" , "show" : "值" , "type" : "input"},
    {"key" : "productCode","show":"产品代码","type":"select","value":[{"text":"PA03","value":"PA03"},
    {"text":"PA06","value":"PA06"}]},
    ]

    output_result = [
    {"key" : "result" , "show" : "操作结果","type" : "input" },
    {"key" : "errMsg","show":"错误信息","color":"red"},
    ]



    def execute(params):
    """
    实现具体的逻辑
    :param params: params["env"]key需要和自定义的对应
    :return:
    """
    result = {"result": "", "errMsg": ""}

    return result



    b、脚本上传位置,固定在某个package


     

    
    

     

    
    

    C、因为脚本的名字是自定义的,使用的时候,怎么导入这部分自定义的脚本并执行呢????

    
    

    首先,需要在脚本上传的package中动态导入所有的py文件,__init__.py文件内容如下

    import os

    file_dir = r'D:wesuremytoolcodepraticescript' # package所在路径
    file_list = [i for i in os.listdir(file_dir) if i.endswith('.py') and not i.startswith('__init__')]

    # 网上有说__import__可以动态导入,但是使用后,执行端还是找不到文件下的函数
    for i in file_list:
    py_name = i.strip('.py')
    __import__(py_name)

    # importlib.import_module 可以动态导入package下的所有py文件
    import importlib
    for i in file_list:
    py_name = i.strip('.py')
    module = importlib.import_module('script.'+ py_name)

    D、__init__.py文件处理了动态加载所有文件之后,在函数调用部分,就可以根据自己上传的文件名,调用函数实现功能了,调用部分如下

    import sys
    sys.path.append(r".script") # 将package的路径加载进来
    import script # 将package的路径加载进来
    params = {}
    # 参数需要按自定义的py文件中参数格式定义
    params["type"] = "openid"
    params["env"] = "sit"
    params["op"] = "query"
    params["amount"] = "1000000"
    params["id"] = "oqYLv0Hl09OUnT6r-1aMyxLPZJoY"
    params["productCode"] = "PA06"

    r = script.testparse2.execute(params) #testparse2为自定义的py文件的名字
    print("r返回值:",r)
    
    
    
    
    
    
     
     
  • 相关阅读:
    大学阶段最后的交流
    JavaScript的一些基础性知识
    CSS的一些总结
    JavaWeb的一些理解
    Java Web之XML基础
    Java基础增强
    反射的理解
    Java网络编程
    Java 中剩下的流以及线程方面的知识
    Java中的流操作
  • 原文地址:https://www.cnblogs.com/yoyo008/p/15323470.html
Copyright © 2011-2022 走看看