我正在尝试在nose中编写测试,但我需要一些关于module和func的设置逻辑的帮助。
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'
而不是在模块I中简单地使用所创建对象项。
发布于 2012-12-19 20:35:02
实际上,您正在尝试访问测试中的全局变量。因此,您的代码应该看起来有点像这样。
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'
它仍然不完美(相同的全局vars解决方案),但至少包装在类中。
发布于 2013-12-24 02:35:45
这段代码适用于我的鼻部:
它结合了这两个世界的优点。类来保持作用域,并且测试比默认的unittest2框架稍微干净一些。
class TestSomething(object):
def setup(self):
self.q_object = u'item'
def test_set(self):
eq_(self.q_object, u'item')
https://stackoverflow.com/questions/13951799
复制相似问题