开发者社区> 问答> 正文

在Python单元测试框架中修改全局变量

我正在使用Python进行一系列的单元测试,其中一些依赖于配置变量的值。这些变量存储在全局Python配置文件中,并在其他模块中使用。我想为不同的配置变量值编写单元测试,但尚未找到实现此目的的方法。

我无法重写我正在测试的方法的签名。

这是我要实现的目标:

from my_module import my_function_with_global_var

class TestSomething(self.unittest):

    def test_first_case(self):
         from config import MY_CONFIG_VARIABLE
         MY_CONFIG_VARIABLE = True
         self.assertEqual(my_function_with_global_var(), "First result")

    def test_second_case(self):
         from config import MY_CONFIG_VARIABLE
         MY_CONFIG_VARIABLE = False
         self.assertEqual(my_function_with_global_var(), "Second result")

谢谢。

编辑:使示例代码更加明确。

展开
收起
祖安文状元 2020-02-22 15:43:12 800 0
1 条回答
写回答
取消 提交回答
  • 不要这样做:

    from my_module import my_function_with_global_var
    
    

    但是这个:

    import my_module
    
    

    然后,您可以注入MY_CONFIG_VARIABLEimport my_module,而无需像这样更改被测系统:

    class TestSomething(unittest.TestCase): # Fixed that for you!
    
        def test_first_case(self):
             my_module.MY_CONFIG_VARIABLE = True
             self.assertEqual(my_module.my_function_with_global_var(), "First result")
    
        def test_second_case(self):
             my_module.MY_CONFIG_VARIABLE = False
             self.assertEqual(my_module.my_function_with_global_var(), "Second result")
    
    

    我对“ 如何模拟pyunit的stdin的输入”的回答做了类似的事情?。

    2020-02-22 15:43:29
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载