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

回到顶部