pytest中的全局变量
在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
或其他最好的办法
感谢事先声明全局变量!
回答:
你在找什么叫做“夹具”。看看下面的例子,它应该解决您的问题:
import pytest @pytest.fixture(scope = 'module')
def global_data():
return {'presentVal': 0}
@pytest.mark.parametrize('iteration', range(1, 6))
def test_global_scope(global_data, iteration):
assert global_data['presentVal'] == iteration - 1
global_data['presentVal'] = iteration
assert global_data['presentVal'] == iteration
你基本上可以跨越测试共用一个固定的实例。它适用于像数据库访问对象更加复杂的东西,但它可以是一些小事就像一本字典:)
Scope: sharing a fixture instance across tests in a class, module or session
以上是 pytest中的全局变量 的全部内容, 来源链接: utcz.com/qa/261906.html