如何在另一个方法中声明属性

时间:2014-08-08 21:55:50

标签: python decorator patch assert

编辑*我似乎用一些无意的话语误导了人们。我认为当instanaited方法包含属性时所有函数。但我真的只想在class2中测试函数中的变量。

我对python&单元测试,如果我问的是完全妄想,请原谅我。

我想知道是否“可以在外部范围内在另一个函数中声明变量”。我一直收到以下错误:

Cannot modify Class2.py

Class1.py

from Class2.py import Class2
Class1(unittest.TestCase)
    def test_class2_fun(self):
        driver = Class2()
        driver.class2_fun

        assertTrue(driver.class2_fun.class2_variable) "???

Class2.py

Class2(self)
    def class2_fun(self):
        class2_variable = TRUE

不确定如何使用正确的语法进行操作。在我用Class2()分配驱动程序之前通过装饰器还是以某种方式通过补丁可以吗?

2 个答案:

答案 0 :(得分:2)

您的类和函数定义中存在一些拼写错误但您想使用hasattr函数将告诉您对象是否具有特定属性。

如果您要执行的操作是检查local variable__init__以外的Class2是否存在,我认为如果不修改内容,则可以文件Class2.py

工作示例

在Class1.py

import unittest
from Class2 import Class2

class Class1(unittest.TestCase):

    def test_class2_at_exists(self):
        driver = Class2()
        self.assertTrue( hasattr( driver, 'class2_attribute' ) )

    def test_class2_at_value(self):
        driver = Class2()
        self.assertTrue( driver.class2_attribute == 'attribute value' )


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

在Class2.py

class Class2(object):
    def __init__(self):
        self.class2_attribute = 'attribute value'
        local_variable = True

在ipython提示

>>> run Class1.py
..
----------------------------------------------------------------------
Ran 2 tests in 0.001s

OK

答案 1 :(得分:1)

你的断言应该是

   assertTrue(driver.class2_attribute)