小编grg*_*sox的帖子

在Python中,如何编写可以访问私有属性而不暴露它们的单元测试?

我正在努力改进我为Python程序编写单元测试用例的方法.我注意到在某些情况下,访问私有成员以确保方法正常运行会非常有帮助.一个示例案例是在尝试测试方法以确定没有预期返回值而非None的正确行为时.我知道这样做的简单方法就是将私有属性改为受保护属性,并直接测试它们.但是,我想找到一种不会暴露界面的方法.

那么如何测试类中的私有属性而不在接口中公开它们,或者,如果适用的话,更好的方法是测试这样的场景,以便正确的单元测试不一定需要私有属性访问?

python testing tdd unit-testing access-modifiers

14
推荐指数
2
解决办法
1万
查看次数

如何解决Python中未全局定义的"self"导入错误?

所以我不断收到这个错误,当我谷歌为它,最常见的解决方法是确保一个类的所有方法都有'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)

python syntax ironpython self

3
推荐指数
1
解决办法
238
查看次数

如何在没有Visual Studio(可能还有py2exe)的情况下将IronPython应用程序编译到EXE中?

所以我试着寻找这个答案,然后直接来询问.将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可以使用它们,我的可执行文件可以看到它们用于引用?

.net dll executable ironpython py2exe

3
推荐指数
3
解决办法
1万
查看次数