首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python测试类

Python测试类
EN

Stack Overflow用户
提问于 2013-10-30 21:29:00
回答 1查看 227关注 0票数 1

使用具有大量初始化工作的简单类:

代码语言:javascript
复制
class MyClass():

    def __init__(self, attr1, attr2):

        self._init_method1(attr1)
        self._init_method2(attr2)
        self._init_method3

    def _init_method1(self, attr1)
    ...
...

我试着使用unittest2来测试_init_methods,这做了一些计算:

代码语言:javascript
复制
class MyTest(unittest.TestCase):

    def setUp(self):
        self.my_class = MyClass(ATTR1, ATTR2)

    def test_init_method1(self):
    ...

    def test_init_method2(self):
    ...

这样做是不合适的:如果任何test_init方法失败,那么每个方法都会失败,因为setUp方法会失败。

  1. 解决这个问题的标准方法是什么?
  2. 我应该如何设计我的单元测试才能封装测试?
  3. 或者我的课堂设计有错误吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-30 21:41:53

您需要在不调用MyClass的情况下创建MyClass.__init__实例,直接调用静态方法MyClass.__new__,类本身作为第一个参数。

代码语言:javascript
复制
class MyTest(unittest.TestCase):

    def setUp(self):
        self.my_class = MyClass.__new__(MyClass)

    def test_init_method1(self):
        attr1 = ...
        result = self.my_class._init_method1(attr1)

当您调用x = MyClass(attr1, attr2)时,它大致相当于:

代码语言:javascript
复制
x = MyClass.__init__( MyClass.__new__(MyClass, attr1, attr2),
                      attr1,
                      attr2 )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19694150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档