gpt4 book ai didi

Python unittest - 在测试中使用模块和类级别设置函数中定义的变量

转载 作者:IT老高 更新时间:2023-10-28 20:34:12 25 4
gpt4 key购买 nike

我正在使用 nosetests 进行 Python 单元测试来试验 Python class and module fixtures , 在我的测试中进行最少的设置。

问题是我不确定如何在我的测试中使用 setupUpModulesetUpClass 函数中定义的任何变量(例如: test_1)。

这是我用来尝试的:

import unittest

def setUpModule():
a = "Setup Module variable"
print "Setup Module"

def tearDownModule():
print "Closing Module"

class TrialTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print a #<======
b = "Setup Class variable"

@classmethod
def tearDownClass(cls):
print "Closing Setup Class"

def test_1(self):
print "in test 1"
print a #<======
print b #<======

def test_2(self):
print "in test 2"

def test_3(self):
print "in test 3"

def test_4(self):
print "in test 4"

def test_5(self):
print "in test 5"

if __name__ == "__main__":
unittest.main()

我得到的错误是:

Setup Module
ERROR
Closing Module

======================================================================
ERROR: test suite for <class 'one_setup.TrialTest'>
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/nose/suite.py", line 208, in run
self.setUp()
File "/Library/Python/2.7/site-packages/nose/suite.py", line 291, in setUp
self.setupContext(ancestor)
File "/Library/Python/2.7/site-packages/nose/suite.py", line 314, in setupContext
try_run(context, names)
File "/Library/Python/2.7/site-packages/nose/util.py", line 469, in try_run
return func()
File "/Users/patila14/Desktop/experimental short scripts/one_setup.py", line 13, in setUpClass
print a
NameError: global name 'a' is not defined

----------------------------------------------------------------------

当然,如果我执行 gloabl aglobal b,它会起作用。有没有更好的办法?

最佳答案

对于字符串变量a,唯一的解决方案是global a。如果您查看 Python 2Python 3源代码,setupModule() 似乎没有做任何神奇的事情,所以所有常用的命名空间规则都适用。

如果 a 是一个可变变量,如列表,您可以在全局范围内定义它,然后在 setupModule 中附加到它。

变量b更容易使用,因为它是在一个类中定义的。试试这个:

@classmethod
def setUpClass(cls):
cls.b = "Setup Class variable"

def test_1(self):
print self.b

关于Python unittest - 在测试中使用模块和类级别设置函数中定义的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19144235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com