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 ...
随机推荐
- [PHP] Laravel 的 503 Service Unavailable 模板提示的来源
当我们看到 Laravel 的 503 样式的模板时,是启用维护模式的时候的提示(php artisan down). 开启访问运行 php artisan up. Refer:Laravel 503 ...
- [Mobi] frida Hook 略知一二: frida-CLI, frida-server
Frida 是一款基于 python + javascript 的 hook 框架,主流平台都支持,由于是基于脚本的交互,因此相比 xposed 和 substrace cydia 更加便捷. 使用时 ...
- SQL server 自定义工资公式设计
目的: 工资系统中,在计算各工资项目的时候,用户能自定义公式.这里的讲述是从数据库方设计方面考虑,做简要的数据模拟和实体.存储过程的设计. 收集数据: 1.Employee员工信息数据(Employe ...
- nginx+uwsgi介绍
一.nginx+uwsgi介绍 pip list # 查看安装过的模块 rpm -q nginx # 查看是否安装某款服务 pip install django == 1.11.11 # 安装djan ...
- JavaWeb 中 “转发”与 “重定向”的区别
JavaWeb 中 "转发"与 "重定向"的区别 每博一文案 人生的常态,就是有聚有散,有得有失,就像山峰一样,总有高低,起伏不断. 曾经,我们是鲜衣怒马的少年 ...
- 聊聊流言协议(Gossip)
什么是流言协议? 在分布式系统中,以下两个是典型的问题: 维护系统状态(节点的活跃性) 节点间的通信 解决这些问题的解决方案之一如下: 集中式状态管理服务 对等状态管理服务 集中式状态管理服务 像 A ...
- Oracle中ALTER TABLE的五种用法(二)
首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...
- linux上PGI编译器安装
1.PGI编译器介绍 随着英伟达的收购,PGI编译器已经已经并入NVIDIA HPC SDK.后面直接安装NVIDIA HPC SDK即可. NVIDIA HPC SDK提供了使用标准的C/C++和F ...
- uni.request二次封装
点击查看代码 const baseUrl = 'https://your-api-base-url.com'; function getAuthToken() { // 获取token的逻辑,可能会从 ...
- Advanced .Net Debugging 8:线程同步
一.介绍 这是我的<Advanced .Net Debugging>这个系列的第八篇文章.这篇文章的内容是原书的第二部分的[调试实战]的第六章[同步].我们经常写一些多线程的应用程序,写的 ...