python globals()[]将字符串转化类,并通过反射执行方法
背景:
通过关键字设计ui自动化框架,将测试用例及其步骤存放到excel文件;其中步骤中包含了封装好的关键字方法,如打开浏览器、输入页面操作等,关键字保存的内容:具体类实例.方法
通过excel获取到关键字,关键字的类型是str,希望将关键字里面的类,转化为对应的类,再实例化这个类,配合反射getattr(类实例,具体方法),实现调起传入的关键字方法
如:
Fun = getattr(obj,open_browser)
Fun() # 执行,有参数可传入参数 Fun(*args)
要解决问题: 将字符串,转化为类/class
使用:Globals()[字符串]:字符串即要转化的类的名称
使用方法:
以下操作都在文件A下操作
1、先使用globals(),在文件A中打印,可以查看到文件A中有引用的类

2、当前文件下有模块,转化为类成功,
转化为类之后,可以使用类调用其下的方法

3、文件A下没有导入模块datetime,转化为类失败

4、eval()和globals()一样可以转化类,前提是当前文件有引入这个模块


在当前文件A,引入模块datetime

解决报错方法:
1、在要使用的文件里面,import 这个类
2、或者通过动态判断,是否存在这个类,如果不存在的话,使用python的动态导入,进行导入

if file_module not in sys.modules:
module = importlib.import_module(file_module)
导入返回的类型为module

注意:
封装自动导入方法时,判断当前文件是否包含传入的文件的模块,这个判断条件要写在要操作的文件,不能和导入方法封装在一起,否则,导入的是封装导入文件里面,而不是当前操作的文件
参考:http://www.proyy.com/6982427777509097485.html
检查是否存在模块
https://www.cnpython.com/qa/31900
动态导入模块
python globals()[]将字符串转化类,并通过反射执行方法的更多相关文章
- Python处理json字符串转化为字典
有一个需求,需要用python把json字符串转化为字典 inp_str = " {'k1':123, 'k2': '345','k3','ares'} " import json ...
- python 字节与字符串转化
name = 'laogaoyang' # 采用系统默认编码格式 nameBytes = name.encode('utf-8') # 先将 name 解码(采用系统默认格式),然后用 'utf-8' ...
- Python中判断字符串是否为数字的三个方法isdecimal 、isdigit、isnumeric的差别
isdecimal .isdigit.isnumeric这三个字符串方法都用于判断字符串是否为数字,为什么用三个方法呢?他们的差别是什么内? isdecimal:是否为十进制数字符,包括Unicode ...
- 小白基础Python重要的字符串详解String的内置方法
String的内置方法: st='hello world {name} is {age}' {} 特殊内容需要识别format print(st.count('1')) 统计元素个数 print ...
- Python判断一个字符串是否包含子串的几种方法
转自---http://blog.csdn.net/yl2isoft/article/details/52079960 1.使用成员操作符 in >>> s='nihao,shiji ...
- python学习-65 继承2-子类中调用父类的方法
子类中调用父类的方法 1.子类继承了父类的方法,然后想进行修改,那么就需要在子类中调用父类的方法. 2.方法一:父类名 class School: Country = 'china' def __in ...
- unittest对单个测试类的多种测试执行方法总结
基于unittest测试框架编写的测试脚本,一般单个测试类下会有多个测试方法,unittest也提供多种测试执行方式,下面就不同方式或者需求一一实操并说明: 一.使用unittest下main()方法 ...
- php byte数组与字符串转换类
<?php /** * byte数组与字符串转化类 * @author ZT */ class Bytes { /** * 转换一个string字符串为byte数组 * @param $str ...
- 第8.19节 使用__doc__访问Python文档字符串(DocStrings )
__doc__特殊变量用于查看类.函数.模块的帮助信息,这些帮助信息存放在文档字符串中. 一. 关于文档字符串 关于文档字符串前面很多章节提到过,DocStrings 文档字符串用于程序的文档说明,并 ...
- 002、Python中json字符串与字典转换
1.测试用例文件TestCase.xlsx 2.编写Python文件进行读取 #!/usr/bin/env python # -*- coding:utf-8 -*- import time impo ...
随机推荐
- dotnet OpenXML 读取形状轮廓线条样式序号超过主题样式列表数
在 OpenXML 中,默认的形状可以通过指定 LineReference 让形状使用文档主题里面的样式.文档主题里面包含多个样式,在形状里面指定样式通过的是序号的方法,如果在形状里面指定的序号超过了 ...
- localstory,sessionstory,vuex,cook
函数式组件 1.特点 没有this(没有实例) 没有响应式数据 它只是一个接受一些 prop 的函数. render MVVM分为Model.View.ViewModel三者. Model:代表数据模 ...
- Flink Forward #Asia2020 流批一体及数仓资料整理
阿里云实时计算负责人 - 王峰(莫问)/ FFA_2020-Flink as a Unified Engine - Now and Next-V4 2020年Flink 基于Flink 的流批一体数仓 ...
- 前端使用 Konva 实现可视化设计器(9)- 另存为SVG
请大家动动小手,给我一个免费的 Star 吧~ 大家如果发现了 Bug,欢迎来提 Issue 哟~ github源码 gitee源码 示例地址 另存为SVG 这一章增强了另存为的能力,实现" ...
- Threading Programming Guide:Thread Management
Thread Cost 创建线程是有开销的,这些开销主要包括空间上的开销以及时间上的开销:在kernel里面分配存储空间,用来存储线程相关的数据和属性:线程的栈空间:线程创建的时间.总结如下: Ite ...
- 设置WordPress文章关键词自动获取,文章所属分类名称,描述自动获取文章内容,给文章的图片自动加上AlT标签
最近在优化网站,SEO优化标准:每一篇文章都要有关键词,关键词的个数为3到6个.每一篇文章都要有描述,描述的字数为汉字在70~80之间,在160个字符之间.每一篇文章的图片都要有Alt标签,自动给图片 ...
- 微信小程序关于小说类使用官方阅读器
https://doc.weixin.qq.com/doc/w3_AAcAYAbdAFwpM63n1R5SIat3aa4cX?scode=AJEAIQdfAAoYHVCBbdAG4A1QYmAFQ 上 ...
- 扩展Unity编辑器顶部Toolbar,增加自定义按钮
游戏需要增加几种启动模式,要在编辑器顶部Toolbar处增加几个按钮:进行下扩展. 这部分Unity没有直接提供接口,需通过反射实现.看了下有一个开源库: https://github.com/mar ...
- java学习之旅(day.16)
集合框架 集合 集合:对象的容器,创建的对象就存储在集合中.集合定义了对多个对象进行操作的常用方法,可实现数组的功能 集合和数组的相同点:都是容器 集合和数组的区别: 数组定义后长度固定,集合长度不固 ...
- 【漏洞通报】WEB VIDEO PLATFORM疑似存在未授权访问漏洞
漏洞描述 WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的开箱即用的网络视频平台,负责实现核心信令与设备管理后台部分,支持NAT穿透,支持海康.大华.宇视等品牌的IPC ...