Unit testing 类内部的python单元测试方法

Unit testing 类内部的python单元测试方法,unit-testing,python-2.7,Unit Testing,Python 2.7,单元测试非常新,所以这可能非常简单,但我不确定如何在函数中模拟自参数 我要测试的函数: 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="

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

我要测试的函数:

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
测试等级:

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()
我得到的输出是:

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)

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


看起来可以将类方法设置为静态,因为它在实现中不使用自参数。因此,只需将该方法设置为静态,就可以按原样使用TestCase类

如果您的类方法不是静态的,请查看virusbloom的答案

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")