我在使用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()
提前致谢!
彼得
答案 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)