AttributeError: 'FlaskClient' object has no attribute 'addition'

AttributeError: 'FlaskClient' object has no attribute 'addition'

我在使用 python/flask 进行非常简单的单元测试时遇到了一些问题。我尝试遵循 flaskrtest_flasker.py 的概念,但它抛出了一个错误,我找不到太多关于它的信息:

AttributeError: 'FlaskClient' object has no attribute 'addition'

我进行的 2 个测试中的一个有效。 self.app.get('/') 确实 return "Hello World" 并且此测试通过。但是"addition"测试好像根本找不到

我的代码:

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

提前致谢!

彼得

函数 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)