【问题标题】:Automated testing in FlaskFlask 中的自动化测试
【发布时间】:2020-06-05 03:16:29
【问题描述】:

我在 python 3 中为 flask 进行自动化测试时遇到问题。我尝试了 unittest、pytests、nosetests,但我仍然不知道如何为 flask 应用程序构建自动化测试。

以下是我使用 unittest 和 pytest 编写的代码
单元测试:

import unittest
from flaskfolder import flaskapp

class FlaskBookshelfTests(unittest.TestCase): 

    @classmethod
    def setUpClass(cls):
            pass 

    @classmethod
    def tearDownClass(cls):
            pass 

    def setUp(self):
            # creates a test client
            self.flaskapp = flaskapp.test_client()
            # propagate the exceptions to the test client
            self.flaskapp.testing = True

    def tearDown(self):
            pass

    def test1(self):
            result = self.flaskapp.get('/')

            self.assertEqual(result.status_code, 200) 

在这段代码中,我遇到了 flaskapp 没有任何 test_client() 函数的错误。
pytest:

import pytest
from flaskfolder import flaskapp
@pytest.fixture
def client():
    db_fd, flaskapp.app.config['DATABASE'] = tempfile.mkstemp()
    flaskapp.app.config['TESTING'] = True

    with flaskapp.app.test_client() as client:
            with flaskapp.app.app_context():
                    flaskapp.init_db()
            yield client

    os.close(db_fd)
    os.unlink(flaskapp.app.config['DATABASE'])
def test1():
    result = client.get('/')

    assert result.data in 'Hello World'

在这个错误中收到“'function'没有任何属性get” 如果完成: def test1(client) 它会给出一个错误,即 flaskapp 没有任何属性 init_db。

【问题讨论】:

    标签: python python-3.x flask automated-tests flask-testing


    【解决方案1】:

    因为客户端是一个 pytest 夹具,您需要将它作为参数包含在您的测试中,所以这应该可以解决您当前的问题

    def test1(client):
        result = client.get('/')
    
        assert result.data in 'Hello World'
    

    【讨论】:

    • 如果完成它给出了flaskapp没有任何属性init_db的错误,我也将它添加到问题中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多