Python:如何有效地对调用OptionParser的方法进行单元测试?
在我的Python单元测试(通过标准的nosetests/unittest.TestCase)中,我有一个类,在这个类中我创建了一个进行选项解析的方法。我想写一个很好的单元测试例程来很好地进行测试 除此之外,下面还有4个问题,我正在寻找实现这一点的最佳方法Python:如何有效地对调用OptionParser的方法进行单元测试?,python,unit-testing,testing,mocking,optionparser,Python,Unit Testing,Testing,Mocking,Optionparser,在我的Python单元测试(通过标准的nosetests/unittest.TestCase)中,我有一个类,在这个类中我创建了一个进行选项解析的方法。我想写一个很好的单元测试例程来很好地进行测试 除此之外,下面还有4个问题,我正在寻找实现这一点的最佳方法 from optparse import OptionParser class Something(object): def getOptionParser(self): return OptionParser()
from optparse import OptionParser
class Something(object):
def getOptionParser(self):
return OptionParser()
def parseMyOptions(self):
parser = self.getOptionParser()
parser.add_option('--debug', action='store_true', help='Run debug mode.')
parser.add_option('--logfile', default='log/logfile.log', help='what filename')
parser.add_option('--url', type='string', help='desired url')
(options, args) = parser.parse_args()
self.debug = options.debug
self.logfile = options.logfile
self.url = options.url
def main(self):
self.parseMyOptions()
class MockOptionParser(object):
def __init__(self):
self.url = None
self.debug = None
self.logfile = None
def add_option(self, *args, action=None, help=None, default=None):
pass
def parse_args(self):
pass
def error(self):
pass
class TestSomething(unittest.TestCase):
def test_something(self):
s = Something()
s.getOptionParser = MockOptionParser()
s.parseMyOptions()
assert True, "assert something useful?"
因此,这里的问题是:
你从MockOptionParser中得到了什么?它还能做其他事情吗?从我所看到的,您在这里所做的只是测试mock对象,这似乎有些徒劳。在python3中,您可以使用
unittest.mock
来避免手动定义MockOptionParser
。如果您使用的是python2,那么可以从PyPI下载模块。无论如何,我认为您应该更专注于测试程序的逻辑,而不是检查您是否正确使用了OptionParser
。