Python中循环函数1调用函数2,函数2中import了一个模块,函数1:

def run():
for a in b:
runTest(a,patter)

函数2:

def runTest(case_dir, patter):
import TestRunner
discover = unittest.defaultTestLoader.discover(case_dir, pattern=patter)

TestRunner中会有一些变量,变量值会动态变化。但是在函数1循环到第二次及以后时,函数2中import模块的变量值不会改变,导致一些动态配置无效。

误区:runTest方法结束时将TestRunner中的变量置为None是无效的,只会在下一次找不到那个变量。

解决方法:

导入模块后使用reload方法重新导入。有人想问这不是多次一举么?

非也非也,下次循环导入时发现模块已存在,就不会再导入,变量也不会有任何变化,重新导入会重新初始化,这样子就把问题解决了。

def runTest(case_dir, patter):
import TestRunner
reload(TestRunner)

python改变导入模块中的变量的问题的更多相关文章

  1. import xxx和from xxx import xx中修改被导入模块里面的变量的坑

    现在有如下几个模块: A.py 功能:定义全局变量,供其他模块使用 name = "张三" lists = [1, 2, 3, 4, 5] B.py 功能:打印A.py中的变量 f ...

  2. Python开发【第一篇】Python模块中特殊变量

    模块中特殊变量 生产环境中,常用的就是__name__和__file__ __doc__ __package__ __cached__ __name__ __file__ 一. __doc__  #获 ...

  3. python有三种导入模块的方法(转)

    原文:http://www.cnblogs.com/allenblogs/archive/2011/11/15/2055149.html python有三种导入模块的方法 其一, import mod ...

  4. 【转】在Python的struct模块中进行数据格式转换的方法

    这篇文章主要介绍了在Python的struct模块中进行数据格式转换的方法,文中还给出了C语言和Python语言的数据类型比较,需要的朋友可以参考下 Python是一门非常简洁的语言,对于数据类型的表 ...

  5. python之导入模块

    导入模块的方法: 导入整个模块:import module_name 导入特定函数:from module_name import function_name 给函数指定别名:from module_ ...

  6. Python的collections模块中namedtuple结构使用示例

      namedtuple顾名思义,就是名字+元组的数据结构,下面就来看一下Python的collections模块中namedtuple结构使用示例 namedtuple 就是命名的 tuple,比较 ...

  7. Python使用functools模块中的partial函数生成偏函数

    所谓偏函数即是规定了固定参数的函数,在函数式编程中我们经常可以用到,这里我们就来看一下Python使用functools模块中的partial函数生成偏函数的方法 python 中提供一种用于对函数固 ...

  8. 修改python import模块中的变量

    可以直接通过 模块名.变量名=xx 的方式修改模块中的全局变量,测试代码如下 模块:test_model.py x = 111 def inc_x(): global x x = x + 1 测试脚本 ...

  9. Python关于导入模块的一些感想:

    写项目的时候,碰到这种情况 程序业务为core,里面有两个目录,core1 和core2  core1中有三个模块,business  main   main1 程序入口为bin目录下的project ...

随机推荐

  1. ubuntu18.04 安装 jdk

    1.当前路径(如果不想下载到当前路径,可以先cd到指定路径,再开始下载),官网下载JDK文件jdk-8u121-linux-x64.tar.gz $ wget https://download.ora ...

  2. k-meanas原理自实现

    import numpy as np import matplotlib.pyplot as plt def build_data(): """ 准备数据 :return ...

  3. spring-第十三篇之零配置支持

    1.搜索bean类,使用注解标注spring bean. @Component:标注一个普通的spring bean类 @Controller:标注一个控制器组件类(Java EE组件) @Servi ...

  4. linux上执行jmeter脚本

    1.linux上安装jmeter 将windows上的zip包直接放到linux上 进入bin目录,chmod 777 jmeter 修改环境变量: 1 2 3 4 # vim /etc/profil ...

  5. axios 利用new FileReader() 下载文件获取返回的错误信息

    this.axios({           method: "post",           url: url,           data: data,           ...

  6. ES6——解构赋值

    解构赋值: 注意: 1.左右两边结构必须一样 练习1,2,3 2.右边必须是个东西(有值)练习4 3.声明和赋值不能分开(必须在一句话里完成)练习5 /* 练习1: // let arr = [1,2 ...

  7. Web前端基础学习-1

    HTML5/CSS简介 首先来说一说什么是HTML5,HTML5可以认为是字面上的意义,也就是HTML的第五代产品,当然从另一个角度来说它是一种新的富客户端解决方案. HTML5 将成为 HTML.X ...

  8. spring-boot-shiro-jwt-redis实现登陆授权功能

    一.前言 在微服务中我们一般采用的是无状态登录,而传统的session方式,在前后端分离的微服务架构下,如继续使用则必将要解决跨域sessionId问题.集群session共享问题等等.这显然是费力不 ...

  9. prometheus 笔记

    前言 prometheus 是监控应用软件类似于nagios. 安装 1.官网下载prometheus-2.2.0.linux-amd64压缩包,解压,执行./prometheus即可.这里重要的是配 ...

  10. 九、Rxjs请求对Observable进行封装

    1.引入 Http.Jsonp.Rxjs 三个模块 2.请求中添加一个 .map(res => res.json) 问题 1.Property 'map' does not exist on t ...