gpt4 book ai didi

python-2.7 - 在测试类中找不到 __init__ 变量?

转载 作者:行者123 更新时间:2023-11-28 21:25:22 25 4
gpt4 key购买 nike

我最近从使用 nose 改为使用 nose2,但是我的很多测试代码似乎在这个过程中出现了问题。特别是我在测试类“self.mir_axis”中放入的 init 变量给出了这个错误:

mirror_index = mirror_matrix.index(self.mir_axis)
AttributeError: 'TestConvert' object has no attribute 'mir_axis'

这曾经与 nose 一起使用,但是对于 nose2 我的 init 变量出于某种原因不再注册。我在这里错过了什么吗?我使用 python 2.7.3,顺便说一句,eclipse 作为 IDE。

from nose2.compat import unittest
from nose2.tools import params
from nose2 import session
from nose2.events import ReportTestEvent
from nose2.plugins import testid
from nose2.tests._common import (FakeStartTestEvent, FakeLoadFromNameEvent,
FakeLoadFromNamesEvent, TestCase)#
# Import maya modules
import maya.cmds as mc
# Absolute imports of other modules
from neo_autorig.scripts.basic import name
from neo_autorig.scripts.basic import utils

# Test class for converting strings
class TestConvert(TestCase):
counter = 0 # counter to cycle through mir_axes

def _init__(self):
mir_axes = ['xy', '-xy', 'yz', '-yz'] # different axes to be applied
self.mir_axis = mir_axes[self.__class__.counter]
self.__class__.counter += 1 # increase counter when run
if self.__class__.counter > 3:
self.__class__.counter = 0 # if counter reaches max, reset
self.utils = utils.Utils(self.mir_axis, False) # pass module variables

def setUp(self): # set up maya scene
side_indicator_l = mc.spaceLocator(n='side_indicator_left')[0]
side_indicator_r = mc.spaceLocator(n='side_indicator_right')[0]
mirror_matrix = ['xy', '-xy', 'yz', '-yz']
trans_matrix = ['tz', 'tz', 'tx', 'tx']
side_matrix = [1, -1, 1, -1]
mirror_index = mirror_matrix.index(self.mir_axis)
mc.setAttr(side_indicator_l+'.'+trans_matrix[mirror_index], side_matrix[mirror_index])
mc.setAttr(side_indicator_r+'.'+trans_matrix[mirror_index], side_matrix[mirror_index]*-1)

def tearDown(self): # delete everything after
mc.delete('side_indicator_left', 'side_indicator_right')

def test_prefix_name_side_type(self): # test string
nc = name.Name('prefix_name_side_type')
existing = nc.get_scenenames('transform')
self.assertEqual(nc.convert('test', 'empty', self.utils.find_side('side_indicator_left'),
'object', existing), 'test_empty_l_object')
self.assertEqual(nc.convert('test', 'empty', self.utils.find_side('side_indicator_right'),
'object', existing), 'test_empty_r_object')

# run if script is run from inside module
if __name__ == '__main__':
import nose2
nose2.main()

最佳答案

我发现您发布的代码段有两个问题:

第一个是 def _init__(self): 缺少下划线;它应该是 def __init__(self):

第二个(似乎是错误的原因)是 _init__ 中的第一行,mir_axes = ['xy', '-xy', . ..,应该是 self.mir_axes = ...

编辑

无论如何,根据 Ned Batchelder,您应该使用 setUp 而不是 __init__Coverage.py名声。 :)

关于python-2.7 - 在测试类中找不到 __init__ 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42130016/

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