我正在用鼻子进行测试,并想在另一个测试项目中使用一个变量。为此,我在设置类时创建变量。在我看来,变量是为每个项目复制的,所以类中的变量保持不变。如果不是一个简单的变量,我使用一个列表,我看到了我期待的行为。Python与鼻子:“测试课程”中的变量范围是什么?
我写了一个小为例,我们可以观察到var1
和varg
进入测试时总是显示相同的值:
import time
import sys
import logging
logger = logging.getLogger('008')
class Test008:
varg = None
@classmethod
def setup_class(cls):
logger.info('* setup class')
cls.var1 = None
cls.list1 = []
def setup(self):
logger.info('\r\n* setup')
logger.info('\t var1: {}, varg: {}, list: {}'.format(
self.var1, self.varg, self.list1))
def teardown(self):
logger.info('* teardown')
logger.info('\t var1: {}, varg: {}, list: {}'.format(
self.var1, self.varg, self.list1))
def test_000(self):
self.var1 = 0
self.varg = 0
self.list1.append(0)
pass
def test_001(self):
# Here I would like to access the variables but they still show 'None'
self.var1 = 1
self.varg = 1
self.list1.append(1)
pass
@classmethod
def teardown_class(self):
logger.info('* teardown class')
结果:
nose.config: INFO: Ignoring files matching ['^\\.', '^_', '^setup\\.py$']
* setup class
008_TestVars.Test008.test_000 ...
* setup
var1: None, varg: None, list: []
* teardown
var1: 0, varg: 0, list: [0]
ok
008_TestVars.Test008.test_001 ...
* setup
var1: None, varg: None, list: [0]
* teardown
var1: 1, varg: 1, list: [0, 1]
ok
* teardown class
----------------------------------------------------------------------
有没有办法有var1
和varg
的值是否从一个测试继续进行到另一个测试?
在我回答这个问题,告诉我你为什么要做到这一点 - 如果你让测试依赖于以前的测试,他们都没有单元测试数据(这可能是好的),你可能必须按照已知的顺序运行它们(这会遗漏一些反馈测试可能会给你的东西。为什么你觉得需要这样做? – doctorlove
感谢您的快速回答。我必须重复命令使用相同的参数来查看它第二次被拒绝,所以我用不同的通过条件第二次写测试 This first c ommand正在使用当前时间填写发送的参数之一。在第二次测试中发送命令时,我需要这个完全相同的参数。 – Pierre