AttributeError:'FlaskClient'对象没有属性'添加'

时间:2015-12-29 10:59:07

标签: python flask python-unittest

我在使用python / flask进行非常简单的单元测试时遇到了一些问题。我曾尝试从 flaskr test_flasker.py 中遵循这个概念,但它抛出了一个错误,我无法找到有关的信息:

  

AttributeError:'FlaskClient'对象没有属性'addition'

我工作的两项测试之一。 self.app.get('/')确实返回“Hello World”并且此测试通过。但似乎根本找不到“加法”测试。

我的代码:

from flask import Flask
payment_app = Flask(__name__)

@payment_app.route('/')
def hello_world():
    return 'Hello World'

def addition(a, b):
    c = a + b
    return c

if __name__ == '__main__':
    #remove debug=True when running in production
    payment_app.debug = True
    payment_app.run()

我的测试代码:

import os
import sys
from payment_app import *
import unittest

class PaymentTestCase(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        pass 

    @classmethod
    def tearDownClass(cls):
        pass 

    def setUp(self):
        self.app = payment_app.test_client()

    def tearDown(self):
        pass 

    def test_init(self):
        result = self.app.get('/')
        print result.data
        self.assertEqual(result.data, "Hello World") 

    def test_addition(self):
        result = self.app.addition(2, 5)
        self.assertEqual(result, 7)

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

提前致谢!

彼得

1 个答案:

答案 0 :(得分:0)

功能addition(a, b)不是您的Flask app对象的成员,而是 payment_app.py 文件的成员。因此,调用self.app.addition(2, 5)失败。

将您的测试用例更改为addition(2, 5),一切正常:

class PaymentTestCase(unittest.TestCase):
    # some parts missing...
    def test_addition(self):
        result = addition(2, 5)
        self.assertEqual(result, 7)