使用pytest测试Flask应用程序时找不到404

托马斯·弗里茨

如果我手动运行它,此简单的Web服务就可以工作,但是在我的单元测试中,我得到了一个404 not found页面作为响应,阻止了我正确地测试应用程序。

正常行为:

在此处输入图片说明

资料夹结构:

/SRC
--web_application.py
/UNIT_TESTS
--test_wab_application.py

web_application.py


from flask import Flask, request, jsonify, send_from_directory

from python.Greeting import Greeting

application = Flask(__name__)


def create_app(test_config=None):
    # create and configure the app
    app = Flask(__name__, instance_relative_config=True)
    app.config.from_mapping(
        SECRET_KEY='mega_developer',
        DATABASE=os.path.join(app.instance_path, 'web_application.sqlite'),
    )
    try:
        os.makedirs(app.instance_path)
    except OSError:
        pass
    return app


@application.route('/greetings', methods=['GET', 'POST'])
def hello():

    # GET: for url manipulation #
    if request.method == 'GET':
        return jsonify(hello = request.args.get('name', 'world', str))

test_web_application.py

import tempfile
import pytest    
import web_application


class TestWebApplication:

    app = web_application.create_app()  # container object for test applications #

    @pytest.fixture
    def initialize_app(self):
        app = web_application.create_app()
        app.config['TESTING'] = True
        app.config['DEBUG'] = False
        app.config['WTF_CSRF_ENABLED'] = False
        app.config['DATABASE'] = tempfile.mkstemp()
        app.testing = True
        self.app = app

    def test_hello_get(self, initialize_app):
        with self.app.test_client() as client:
            response = client.get('/greetings?name=Rick Sanchez')

        assert response.status_code == 200

测试结果(仅最相关的部分):

Launching pytest with arguments test_web_application.py::TestWebApplication::test_hello_get in C:\Users\Xrenyn\Documents\Projekte\Studium_Anhalt\QA&Chatbots Exercises\Exercise 2 - Web Service Basics\UNIT_TESTS

============================= test session starts =============================
platform win32 -- Python 3.8.0, pytest-5.2.2, py-1.8.0, pluggy-0.13.0 -- C:\Users\Xrenyn\Documents\Projekte\Studium_Anhalt\QA&Chatbots Exercises\Exercise 2 - Web Service Basics\VENV\Scripts\python.exe
cachedir: .pytest_cache
rootdir: C:\Users\Xrenyn\Documents\Projekte\Studium_Anhalt\QA&Chatbots Exercises\Exercise 2 - Web Service Basics\UNIT_TESTS
collecting ... collected 1 item

test_web_application.py::TestWebApplication::test_hello_get FAILED       [100%]
test_web_application.py:21 (TestWebApplication.test_hello_get)
404 != 200

Expected :200
Actual   :404

到目前为止,我已经为中的client.get()方法测试了各种替代的路由路径test-web_application.py,包括诸如'/ SRC / greetings?name = Rick Sanchez'或'../SRC/greetings?name=Rick Sanchez'之类的组合,但效果没有任何不同。

您对我可能做错了什么或如何从单元测试中访问Web服务的功能有任何想法吗?

姆帕拉克

我认为问题在于您正在创建两个Flask实例。第一个使用application您要添加hello路由的名称第二个使用create_app功能。您需要使用application实例(hello向其添加路由实例)创建一个测试客户端

您可以导入application然后获得client使用application.test_client()吗?

样品溶液:

import pytest

from web_application import application


@pytest.fixture
def client():
    with application.test_client() as client:
        yield client


class TestSomething:
    def test_this(self, client):
        res = client.get('/greetings?name=Rick Sanchez')
        assert res.status_code == 200

查看有关测试官方文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

部署MVC应用程序时找不到404

来自分类Dev

测试应用程序时找不到我的iOS设备

来自分类Dev

Flask应用程序找不到gpg

来自分类Dev

构建应用程序时找不到Cocoapods标头

来自分类Dev

找不到类运行应用程序时出错

来自分类Dev

部署闪亮的应用程序时找不到数据对象

来自分类Dev

运行Laravel应用程序时找不到Phpmyadmin

来自分类Dev

分发应用程序时找不到Web参考

来自分类Dev

构建应用程序时找不到Cocoapods标头

来自分类Dev

找不到类,运行应用程序时出错

来自分类Dev

运行 Laravel 应用程序时,找不到 phpmyadmin

来自分类Dev

使用“ pythonw”(而不是“ python”)运行应用程序时找不到模块

来自分类Dev

使用Mina在AWS上部署Rails应用程序时找不到捆绑命令

来自分类Dev

在测试Flask应用程序时保留多种功能的更改

来自分类Dev

在Bluemix中构建应用程序时出现“错误404:SRVE0190E:找不到文件”

来自分类Dev

部署Flask应用程序时如何解决此Elastic Beanstalk错误:在系统上找不到Python 3.7.0

来自分类Dev

Flask找不到应用程序文件

来自分类Dev

错误:在VSCode中找不到Flask应用程序

来自分类Dev

在 Docker 中运行的 Flask 应用程序找不到模板

来自分类Dev

在 redhat 上找不到 DPDK 测试应用程序

来自分类Dev

使用 Appium 在模拟器上测试 iOS 应用程序 - 找不到元素

来自分类Dev

使用托管TFS池构建UWP应用程序时找不到SDK SQLite.UWP.2015

来自分类Dev

使用Delphi 10.4和XCode 10.1编译iOS应用程序时出现问题-找不到/ usr / bin / actool

来自分类Dev

使用Spring Security初始化应用程序时出错:找不到net / sf / ehcache / Ehcache

来自分类Dev

使用托管TFS池构建UWP应用程序时找不到SDK SQLite.UWP.2015

来自分类Dev

使用Jest测试节点应用程序时为什么看不到控制台日志输出

来自分类Dev

在 Spring Kafka 应用程序的应用程序负载测试期间找不到主题错误

来自分类Dev

在iis7上浏览应用程序时找不到css和js文件(服务器响应状态为404)

来自分类Dev

离子和电子应用程序未启动。启动应用程序时出错,在 {Project Directory} 中找不到模块

Related 相关文章

  1. 1

    部署MVC应用程序时找不到404

  2. 2

    测试应用程序时找不到我的iOS设备

  3. 3

    Flask应用程序找不到gpg

  4. 4

    构建应用程序时找不到Cocoapods标头

  5. 5

    找不到类运行应用程序时出错

  6. 6

    部署闪亮的应用程序时找不到数据对象

  7. 7

    运行Laravel应用程序时找不到Phpmyadmin

  8. 8

    分发应用程序时找不到Web参考

  9. 9

    构建应用程序时找不到Cocoapods标头

  10. 10

    找不到类,运行应用程序时出错

  11. 11

    运行 Laravel 应用程序时,找不到 phpmyadmin

  12. 12

    使用“ pythonw”(而不是“ python”)运行应用程序时找不到模块

  13. 13

    使用Mina在AWS上部署Rails应用程序时找不到捆绑命令

  14. 14

    在测试Flask应用程序时保留多种功能的更改

  15. 15

    在Bluemix中构建应用程序时出现“错误404:SRVE0190E:找不到文件”

  16. 16

    部署Flask应用程序时如何解决此Elastic Beanstalk错误:在系统上找不到Python 3.7.0

  17. 17

    Flask找不到应用程序文件

  18. 18

    错误:在VSCode中找不到Flask应用程序

  19. 19

    在 Docker 中运行的 Flask 应用程序找不到模板

  20. 20

    在 redhat 上找不到 DPDK 测试应用程序

  21. 21

    使用 Appium 在模拟器上测试 iOS 应用程序 - 找不到元素

  22. 22

    使用托管TFS池构建UWP应用程序时找不到SDK SQLite.UWP.2015

  23. 23

    使用Delphi 10.4和XCode 10.1编译iOS应用程序时出现问题-找不到/ usr / bin / actool

  24. 24

    使用Spring Security初始化应用程序时出错:找不到net / sf / ehcache / Ehcache

  25. 25

    使用托管TFS池构建UWP应用程序时找不到SDK SQLite.UWP.2015

  26. 26

    使用Jest测试节点应用程序时为什么看不到控制台日志输出

  27. 27

    在 Spring Kafka 应用程序的应用程序负载测试期间找不到主题错误

  28. 28

    在iis7上浏览应用程序时找不到css和js文件(服务器响应状态为404)

  29. 29

    离子和电子应用程序未启动。启动应用程序时出错,在 {Project Directory} 中找不到模块

热门标签

归档