首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python类内部的单元测试方法

python类内部的单元测试方法
EN

Stack Overflow用户
提问于 2014-04-29 23:56:02
回答 2查看 12.4K关注 0票数 9

单元测试非常新,所以这可能是非常简单的事情,但我不确定如何在函数中模拟自参数。

我想测试的函数:

代码语言:javascript
复制
class dataFeed:
    def generateURL(self, ticker, days, period):
        return "https://www.google.com/finance/getprices?i=" + str(period) + "&p=" + str(days) + "d&f=d,o,h,l,c,v&df=cpct&q=" + ticker

测试类:

代码语言:javascript
复制
import unittest
from dataFeed import dataFeed as df

class TestCases(unittest.TestCase):
    def test(self):
        self.assertEqual(df.generateURL("AAPL", 2, 5), "https://www.google.com/finance/getprices?i=5&p=2d&f=d,o,h,l,c,v&df=cpct&q=AAPL")

if __name__ == '__main__':
    unittest.main()

我得到的输出是:

代码语言:javascript
复制
ERROR: test (__main__.TestCases)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\ian\Documents\Capstone\Components\testing.py", line 9, in test
    self.assertEqual(df.generateURL("AAPL", 2, 5), "https://www.google.com/finance/getprices?i=5&p=2d&f=d,o,h,l,c,v&df=cpct&q=AAPL")
TypeError: unbound method generateURL() must be called with dataFeed instance as first argument (got str instance instead)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-30 04:46:33

您将需要创建dataFeed对象的一个实例并将其用于测试。

例如。

代码语言:javascript
复制
class TestCases(unittest.TestCase):
    def test(self):
        data_feed = dataFeed()
        self.assertEqual(data_feed.generateURL("AAPL", 2, 5), "https://www.google.com/finance/getprices?i=5&p=2d&f=d,o,h,l,c,v&df=cpct&q=AAPL")
票数 14
EN

Stack Overflow用户

发布于 2018-06-27 05:08:30

看起来你的类方法可以成为静态的,因为它在实现中没有使用self参数。因此,只需将该方法设为静态,您就可以按原样使用您的TestCase类。

如果你的类方法不是静态的,看看virusbloom的答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23369588

复制
相关文章

相似问题

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