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

使用nosetests测试python类
EN

Stack Overflow用户
提问于 2015-01-10 22:56:35
回答 2查看 111关注 0票数 0

尽管我花了几个小时在网上浏览文档和各种博客文章,但我仍然不知道如何做到这一点。

我有一门课:

代码语言:javascript
复制
class ExampleClass(object):
    def __init__(self,x,y):
        self.x = x
        self.y = y

    def add(self):
        return self.x+self.y

    def multiply(self):
        return self.x*self.y

现在假设我想要编写一些测试来检查方法add和multiply是否做了我想让它们做的事情。

在我的测试文件中,我有:

代码语言:javascript
复制
class TestExampleClass(object):
    def setup(self):
        class_object = ExampleClass(1,1)

    def test_add(self):
        assert class_object.add() == 2

    def test_multiply(self):
        assert class_object.multiply() == 1

但是,我得到了一个NameError:没有定义全局名称"class_object“。

我真的不确定我应该如何实现我想要的东西,那就是用我理解和知道的一些数据实例化一个类对象,并测试这些数据上的方法是否返回我知道它们应该返回的内容。

EN

回答 2

Stack Overflow用户

发布于 2015-01-10 22:58:59

您描述的错误是因为您的TestExampleClass没有

代码语言:javascript
复制
def __init__(self):

在里面。所以它永远不会去真正的创建class_object。

从代码的编写方式来看,我认为您希望setup(self)实际上是__init__(self)

,编辑,,你也需要self.x,等等(在一个单独的答案中提到)。这不是您报告的错误的原因,但它将是您在__init__中看到的错误的原因。

所以大量借鉴了另一个答案,但添加了__init__

代码语言:javascript
复制
class ExampleClass(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def add(self):
        return self.x + self.y

    def multiply(self):
        return self.x * self.y

class TestExampleClass(object):
    def __init__(self):
        self.class_object = ExampleClass(1, 1)

    def test_add(self):
        assert self.class_object.add() == 2

    def test_multiply(self):
        assert self.class_object.multiply() == 1
票数 0
EN

Stack Overflow用户

发布于 2015-01-10 23:01:34

要创建/访问实例变量,需要用self限定变量

代码语言:javascript
复制
class ExampleClass(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def add(self):
        return self.x + self.y

    def multiply(self):
        return self.x * self.y

class TestExampleClass(object):
    def setup(self):
        self.class_object = ExampleClass(1, 1)

    def test_add(self):
        assert self.class_object.add() == 2

    def test_multiply(self):
        assert self.class_object.multiply() == 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27877545

复制
相关文章

相似问题

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