Httprunner V4学习记录-- SessionRunner Init

获取测试文件路径

httprunner/config.py

class Config(object):
    def __init__(self, name: Text) -> None:
        caller_frame = inspect.stack()[1]
        self.__name: Text = name
        self.__base_url: Text = ""
        self.__variables: VariablesMapping = {}
        self.__config = TConfig(name=name, path=caller_frame.filename)

在 Python 中,inspect 模块提供了用于获取对象信息的工具。你可以使用它来获取函数、类、模块以及其他对象的信息,例如获取源代码、参数、类继承关系等。

以下是 inspect 模块中一些常用的功能:

  1. 获取对象信息inspect.ismodule(obj)inspect.isclass(obj)inspect.isfunction(obj) 等函数可以用来判断对象的类型。
  2. 获取源代码inspect.getsource(obj) 可以用来获取函数或方法的源代码。
  3. 获取文档字符串inspect.getdoc(obj) 可以用来获取对象的文档字符串。
  4. 获取参数信息inspect.signature(obj) 可以获取函数、方法、类构造函数等的参数签名信息,包括参数名、默认值等。
  5. 获取调用堆栈信息inspect.stack() 可以获取当前的调用堆栈信息,包括文件名、行号等。
  6. 获取类继承关系inspect.getmro(cls) 可以获取类的方法解析顺序(Method Resolution Order, MRO)。
  7. 其他inspect.getmembers(obj) 可以获取对象的所有成员,inspect.getfile(obj) 可以获取对象所在的文件路径等。

Loading debugtak函数,load env文件

httprunner/loader.py

class SessionRunner(object):
    def __init(self):
        self.__project_meta = self.__project_meta or load_project_meta(
            self.__config.path
        )

动态添加模块,添加debugtalk模块内的函数

imported_module = importlib.import_module("debugtalk")

def load_module_functions(module) -> Dict[Text, Callable]:
    module_functions = {}
    for name, item in vars(module).items():
        if isinstance(item, types.FunctionType):
            module_functions[name] = item

    return module_functions

importlib.import_module() 函数是 Python 标准库中的一部分,用于动态地导入模块。这个函数可以在运行时根据指定的模块名动态地加载并返回相应的模块对象。

Parse

1 个赞