gpt4 book ai didi

python - 如何更改模拟对象的返回值?

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

我有课

import pandas as pd

class foo(object):
def __init__(self):
self.info = pd.DataFrame()

def getData(self):
self.__readCSV()

def __readCSV(self):
self.info = pd.read_csv(self.filename)

我有一个单元测试类

class test(unittest.TestCase):
def test(self):
mock = patch('foo.pandas.read_csv')
foo().getData()

...

如何更改 pd.read_csv(self.filename) 返回值作为 DataFrame({'column1': Series([1., 2., 3.]),' column2': Series([4., 5., 6.])}) 测试self.info是否被赋值,with assertEqual?

最佳答案

您使用的是 Python 3 吗? Python 3 有一个内置的模拟库,但对于 Python 2.x,您需要使用第三方库 ( http://www.voidspace.org.uk/python/mock/index.html )。

要模拟 pd.read_csv,您可以使用以下内容:

import unittest
# for Python 3.x
from unittest.mock import patch

# for Python 2.x
# from mock import patch
import pandas as pd

class test(unittest.TestCase):
@patch('foo.pd.read_csv')
def test(self, mock_read_csv):
mock_read_csv.return_value = pd.DataFrame({'column1': Series([1., 2., 3.]),'column2': Series([4., 5., 6.])})
assert foo().getData()

关于python - 如何更改模拟对象的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31589988/

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