pytest中的全局变量

时间:2017-12-18 09:01:27

标签: python oop pytest

在Pytest中,我尝试做以下事情,我需要保存以前的结果,并将当前/当前结果与之前的多次迭代进行比较。 我已按以下方式完成:

@pytest.mark.parametrize("iterations",[1,2,3,4,5])   ------> for 5 iterations
@pytest.mark.parametrize("clsObj",[(1,2,3)],indirect = True) ---> here clsObj is the instance. (clsObj.currentVal, here clsObj gets instantiated for every iteration and it is instance of **class func1**)

presentVal = 0
assert clsObj.currentVal > presrntVal
clsObj.currentVal =  presentVal

当我每次循环presentVal时,如果我这样做,则将其分配给0(预期因为它是局部变量)。相反,我尝试将presentVal声称为全局,global presentVal,并且我在我的测试用例之上初始化presentVal但是没有转好。

class func1():
    def __init__(self):
        pass
    def currentVal(self):
        cval = measure()  ---------> function from where I get current values
        return cval

有人可以建议如何以pytest或其他最佳方式声明全局变量

提前致谢!

1 个答案:

答案 0 :(得分:2)

您正在寻找的东西被称为“夹具”。看看下面的例子,它应该解决你的问题:

if (validations["EMPRESA"] && validations["EMPRESA"].required) {
  console.log(true)
} else {
  console.log(false)
}

您实际上可以跨测试共享一个fixture实例。它适用于更复杂的东西,比如数据库访问对象,但它可能像字典一样简单:)

Scope: sharing a fixture instance across tests in a class, module or session