我试图用python为功能为y的代码X编写单元测试。在测试代码中,我使用: 从X导入y。
但是,在X内,还有其他函数(函数z)定义了全局变量。 在测试代码中,导入并调用函数y时,会出现此错误,即未定义这些全局变量(因为我特别是仅调用函数y,而不是z)。
是否可以在测试代码中定义那些所需的全局变量并运行导入的函数(“ y”)?
这是代码X:
def calc_z:
global a, b, c
return(a+b+c)
def calc_y:
return(a*b*c)
我正在为calc_y编写单元测试。在单元测试中: 从X导入calc_y。但是calc_y使用的是calc_z中定义的全局变量。我以为可以在测试文件中定义全局a,b,c来删除calc_z对calc_z的依赖关系,但这没用。
答案 0 :(得分:0)
确实可以在函数内定义全局变量,尽管这是不好的编程风格(但我知道您不能更改此设置)。这会更改变量的创建时间(通常仅在调用该函数时创建),而不会更改位置-它们仍然全局存在于模块中,您仍然可以从外部在此处进行设置。
因此,您的示例的测试可能如下所示(假设您使用pytest):
import x
def test_calc_y():
x.a = 1
x.b = 2
x.c = 3
assert x.calx_y() == 6