背景:

通过关键字设计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

动态导入模块

https://blog.csdn.net/edward_zcl/article/details/88809212?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-88809212-blog-103053773.t5_searchtargeting_download_v1&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-88809212-blog-103053773.t5_searchtargeting_download_v1&utm_relevant_index=1

python globals()[]将字符串转化类,并通过反射执行方法的更多相关文章

  1. Python处理json字符串转化为字典

    有一个需求,需要用python把json字符串转化为字典 inp_str = " {'k1':123, 'k2': '345','k3','ares'} " import json ...

  2. python 字节与字符串转化

    name = 'laogaoyang' # 采用系统默认编码格式 nameBytes = name.encode('utf-8') # 先将 name 解码(采用系统默认格式),然后用 'utf-8' ...

  3. Python中判断字符串是否为数字的三个方法isdecimal 、isdigit、isnumeric的差别

    isdecimal .isdigit.isnumeric这三个字符串方法都用于判断字符串是否为数字,为什么用三个方法呢?他们的差别是什么内? isdecimal:是否为十进制数字符,包括Unicode ...

  4. 小白基础Python重要的字符串详解String的内置方法

    String的内置方法: st='hello world  {name} is {age}'  {}  特殊内容需要识别format print(st.count('1')) 统计元素个数 print ...

  5. Python判断一个字符串是否包含子串的几种方法

    转自---http://blog.csdn.net/yl2isoft/article/details/52079960 1.使用成员操作符 in >>> s='nihao,shiji ...

  6. python学习-65 继承2-子类中调用父类的方法

    子类中调用父类的方法 1.子类继承了父类的方法,然后想进行修改,那么就需要在子类中调用父类的方法. 2.方法一:父类名 class School: Country = 'china' def __in ...

  7. unittest对单个测试类的多种测试执行方法总结

    基于unittest测试框架编写的测试脚本,一般单个测试类下会有多个测试方法,unittest也提供多种测试执行方式,下面就不同方式或者需求一一实操并说明: 一.使用unittest下main()方法 ...

  8. php byte数组与字符串转换类

    <?php /** * byte数组与字符串转化类 * @author ZT */ class Bytes { /** * 转换一个string字符串为byte数组 * @param $str ...

  9. 第8.19节 使用__doc__访问Python文档字符串(DocStrings )

    __doc__特殊变量用于查看类.函数.模块的帮助信息,这些帮助信息存放在文档字符串中. 一. 关于文档字符串 关于文档字符串前面很多章节提到过,DocStrings 文档字符串用于程序的文档说明,并 ...

  10. 002、Python中json字符串与字典转换

    1.测试用例文件TestCase.xlsx 2.编写Python文件进行读取 #!/usr/bin/env python # -*- coding:utf-8 -*- import time impo ...

随机推荐

  1. [PHP] Laravel 的 503 Service Unavailable 模板提示的来源

    当我们看到 Laravel 的 503 样式的模板时,是启用维护模式的时候的提示(php artisan down). 开启访问运行 php artisan up. Refer:Laravel 503 ...

  2. [Mobi] frida Hook 略知一二: frida-CLI, frida-server

    Frida 是一款基于 python + javascript 的 hook 框架,主流平台都支持,由于是基于脚本的交互,因此相比 xposed 和 substrace cydia 更加便捷. 使用时 ...

  3. SQL server 自定义工资公式设计

    目的: 工资系统中,在计算各工资项目的时候,用户能自定义公式.这里的讲述是从数据库方设计方面考虑,做简要的数据模拟和实体.存储过程的设计. 收集数据: 1.Employee员工信息数据(Employe ...

  4. nginx+uwsgi介绍

    一.nginx+uwsgi介绍 pip list # 查看安装过的模块 rpm -q nginx # 查看是否安装某款服务 pip install django == 1.11.11 # 安装djan ...

  5. JavaWeb 中 “转发”与 “重定向”的区别

    JavaWeb 中 "转发"与 "重定向"的区别 每博一文案 人生的常态,就是有聚有散,有得有失,就像山峰一样,总有高低,起伏不断. 曾经,我们是鲜衣怒马的少年 ...

  6. 聊聊流言协议(Gossip)

    什么是流言协议? 在分布式系统中,以下两个是典型的问题: 维护系统状态(节点的活跃性) 节点间的通信 解决这些问题的解决方案之一如下: 集中式状态管理服务 对等状态管理服务 集中式状态管理服务 像 A ...

  7. Oracle中ALTER TABLE的五种用法(二)

    首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...

  8. linux上PGI编译器安装

    1.PGI编译器介绍 随着英伟达的收购,PGI编译器已经已经并入NVIDIA HPC SDK.后面直接安装NVIDIA HPC SDK即可. NVIDIA HPC SDK提供了使用标准的C/C++和F ...

  9. uni.request二次封装

    点击查看代码 const baseUrl = 'https://your-api-base-url.com'; function getAuthToken() { // 获取token的逻辑,可能会从 ...

  10. Advanced .Net Debugging 8:线程同步

    一.介绍 这是我的<Advanced .Net Debugging>这个系列的第八篇文章.这篇文章的内容是原书的第二部分的[调试实战]的第六章[同步].我们经常写一些多线程的应用程序,写的 ...