1. 首页 > 科技

pytest使用全局变量进行参数化为什么不行?(pytest框架如何参数化?)

pytest使用全局变量进行参数化为什么不行?(pytest框架如何参数化?)

pytest框架如何参数化?

语法:

1). @pytest.mark.parametrize("参数名",["01_值1","02_值2"])

2). @pytest.mark.parametrize("参1,参2",[("01_参1的值","01_参2的值"),("02_参1的值","02_参2的值")])

注意:

1. 参数名:

1). 多个参数名时,参数与参数之间使用逗号分隔,但是注意所有的参数必须为一个字符串!

2. 参数值:

1). 单个参数名的值,格式必须为列表,如:["admin"," admin ","admin123"]

2). 多个参数值:格式为列表,列表内嵌套元祖,如:[("第一轮参1值","第一轮参2值"),("第二轮参1值","第二轮参2值")]

3. 调用的参数名必须和设置的参数化引用名称一样。

4. parametrize无法通过助写完成,需要手动编写或粘贴。

python问题 我想创建一个一个参数的函数:引用一个全局变量作为参数,然后在这个函数里面这个全局

1,任何程序应减少使用全局变量,

2,python 中定义在文件里的就是全局变量,不再任何函数和类中,

3,你的问题非要这么解用递归

def fun(n):

    if n<1:

        return n

    else:

        return n+f(n-1)

python 全局变量怎么用

在python中,全局变量一般有两种使用方式:

第一种:是在一个单独的模块中定义好,然后在需要使用的全局模块中将定义的全局变量模块导入。

第二种:直接在当前的模块中定义好,然后直接在本模块中通过global声明,然后使用

具体的方法如下所示:

第一种:

SOLR_URL='http://solr.'

def tt():

global SOLR_URL

SOLR_URL=SOLR_URL+'#aa'

if __name__=='__main__':

tt()

print SOLR_URL

#输出:

http://solr.#aa

PS:在此种用法中,如果我们在函数tt中不使用global 声明全局变量SOLR_URL,其实也可以使用,但是此时应该是作为一个内部变量使用,由于没有初始值,因此报错

Python查找变量是顺序是:先局部变量,再全局变量

SOLR_URL='http://solr.'

def tt():

#global SOLR_URL

SOLR_URL=SOLR_URL+'#aa'

if __name__=='__main__':

tt()

print SOLR_URL

#输出:

SOLR_URL=SOLR_URL+'#aa'

UnboundLocalError: local variable 'SOLR_URL' referenced before assignment

第二种:

global_list.py

GLOBAL_A='hello'

GLOBAL_B='world'

test.py

import global_list

def tt():

print global_list.GLOBAL_A

if __name__=='__main__':

tt()

#输出:

hello

python 全局变量

你直接定义的localvar是个全局变量;而test()这个函数中会定义(或重绑定)全局变量localvar为6。

可以这样理解:函数是一个盒子,所有函数体里定义的变量都只能在盒子里存在。但是global关键字让函数可以定义能拿到盒子外的变量(所以,如果变量名字相同,后来的赋值操作就会覆盖之前的值,这和你在盒子外面的行为是一样的)。

>>> def box():

localvar = 6

>>> def box_with_a_global_var():

global globalvar

globalvar = 6

>>> localvar = 5

>>> box()

>>> localvar

5

>>> box_with_a_global_var()

>>> globalvar = 5

>>> globalvar

5