我正在尝试用鼻子编写测试,但是我需要一些关于模块和函数设置逻辑的帮助。
def setup_func():
q_object = u'item'
retry_in = 20
@with_setup(setup_func)
def test_set():
assert q_object == u'item'
当我运行nosetests时,我得到以下错误:
NameError: global name 'q_object' is not defined
那么如何在我的测试函数中访问q_object呢? 我如何从特定测试类中的setup_module()访问对象?
我想出了setup_module。
setup_module(module):
module.item = u'item'
比模块中我简单地使用创建的对象 - 项目。
答案 0 :(得分:2)
这段代码对我有用:
它融合了两全其美。用于保持范围的类和比默认unittest2框架稍微更清晰的测试。
class TestSomething(object):
def setup(self):
self.q_object = u'item'
def test_set(self):
eq_(self.q_object, u'item')
答案 1 :(得分:1)
实际上,您正试图在测试中访问全局变量。所以,你的代码应该看起来像这样。
q_object = None
def setup_func():
global q_object
q_object = u'item'
@with_setup(setup_func)
def test_set():
global q_object
assert q_object == u'item'
但是使用全局变量 - 真的不是一个好主意。尝试找到另一种方法,让你避免它们。
我认为测试课程将完全适合您
class ExampleTest(unittest.TestCase):
def setUp(self):
self.q_object = u'item'
def test_a(self):
assert self.q_object == u'item'
它仍然不完美(同样的全球变量解决方案),但至少包含在课堂内。