【问题标题】:Creating mock object within python unittest在 python unittest 中创建模拟对象
【发布时间】:2017-03-12 20:47:14
【问题描述】:

我对 Python 中的单元测试完全陌生,如果这是一个菜鸟问题,我很抱歉。

我有一个客户类:

class Customer(object):

    def __init__(self, name, clubMember, taxExempt):
        self.name = name
        self.clubMember = clubMember
        self.taxExempt = taxExempt

    def isClubMember(self):
        if (self.clubMember == True):
            return True
        else:
            return False

    def isTaxExempt(self):
        if (self.taxExempt == True):
            return True
        else:
            return False

我想用一种模拟客户来测试它:

import unittest
import Customer 

class TestCustomer(unittest.TestCase):
    def setUp(self):
        self.customer = Customer("John Doe", True, False)

    def test_customer_member_status(self):
        self.assertTrue(self.customer.isClubMember(), 'incorrect member status')

    def test_customer_tax_exemption(self):
        self.assertFalse(self.customer.isTaxExempt(), 'incorrect tax status')

    def tearDown(self):
        self.customer.dispose()

但是,我收到以下错误:

self.customer = Customer("John Doe", True, False)
TypeError: 'module' object is not callable

我尝试搜索许多不同的网站,但找不到创建模拟客户的正确格式。另外,我不确定如何创建多个模拟客户来测试另一个示例,例如 Customer("Jane Doe", False, True) 等。

【问题讨论】:

  • 您的Customer 类是否已在Customer.py 中定义?如果是这样,您需要将测试文件中的导入更改为 from Customer import Customer
  • 你能显示你的目录结构吗?您的文件是否包含名为Customer.pyCustomer 类?如果是,您可能想要from Customer import Customer。不过需要注意的是,这并不是真正的模拟!你绝对不想想模拟Customer,因为那是你正在测试的东西!

标签: python python-2.7 unit-testing python-unittest


【解决方案1】:

我猜你的模块名称也是 Customer 并且当你在做 import Customer 时,它是在导入模块而不是类。

改为这样做

from Customer import Customer 

在测试模块中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2022-01-22
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多