我正在努力改进我为Python程序编写单元测试用例的方法.我注意到在某些情况下,访问私有成员以确保方法正常运行会非常有帮助.一个示例案例是在尝试测试方法以确定没有预期返回值而非None的正确行为时.我知道这样做的简单方法就是将私有属性改为受保护属性,并直接测试它们.但是,我想找到一种不会暴露界面的方法.
那么如何测试类中的私有属性而不在接口中公开它们,或者,如果适用的话,更好的方法是测试这样的场景,以便正确的单元测试不一定需要私有属性访问?
所以我不断收到这个错误,当我谷歌为它,最常见的解决方法是确保一个类的所有方法都有'self'作为第一个参数.这是错误:
File "C:\Users\me\Documents\Project\code\model\TrainEvent.py", line 9, in
NameError: global name 'self' is not definedPress any key to continue . . .
这似乎是一个简单修复的常见错误,除了我的所有方法都将self作为第一个参数.然后我意识到回溯只是指向声明类名的行.它没有指向我用self调用方法的行.在此之前很久就会出现此错误.事实上,它似乎是在进口时提出的.这是TrainEvent.py.
from xml.etree.ElementTree import Element
class TrainEvent(object):
def __init__(self, element):
self._element = element
self.MsgId = self.__tagGrab('MsgId')
self.MsgTime = self.__tagGrab('MsgTime')
self.Offset = self.__tagGrab('Offset')
self.TranId = self.__tagGrab('TranId')
self.Portal = self.__tagGrab('Portal')
moveElem = self._element.find('Move')
self.StartTime = self.__tagGrab('StartTime', moveElem)
self.EndTime = self.__tagGrab('EndTime', moveElem)
self.Type = self.__tagGrab('Type', moveElem)
carElem = self._element.find('Car')
self.Name = self.__tagGrab('Name', carElem)
self.UniqueId = self.__tagGrab('UniqueId', carElem)
self.Orientation = self.__tagGrab('Orientation', carElem)
self.Wells = …
Run Code Online (Sandbox Code Playgroud) 所以我试着寻找这个答案,然后直接来询问.将IronPython应用程序/脚本集转换为EXE似乎是可行的.一个问题是,他们似乎都在谈论将IronPython与IronPython Studios(Visual Studio的Python插件)一起使用.最后我查了一下,我认为IronPython Studios基本上被用于Visual Studios(或PTVS)插件工具的Python工具所取代.这个问题是由于我的代码的结构方式,它实际上设法在将我的代码加载到IDE时使插件崩溃,从而使Visual Studios崩溃.它会这样做,直到下个月定期更新在月底或下个月初发布.所以这不是一个选项,因为我不得不在Eclipse中使用PyDev插件开发我的项目.
我之前使用py2exe将一些基本的Python应用程序转换为可执行文件,但那时我正在使用CPython解释器.我不知道如何设置py2exe来使用IronPython.是否可以使用py2exe来生成IronPython可执行文件?如果我的程序使用额外的C#程序集来完成它的工作,我怎么设置它们以便py2exe可以使用它们,我的可执行文件可以看到它们用于引用?
ironpython ×2
python ×2
.net ×1
dll ×1
executable ×1
py2exe ×1
self ×1
syntax ×1
tdd ×1
testing ×1
unit-testing ×1