2016-06-17 30 views
1

Ich folge Recipes von Framework.Testflaschen-App ohne laufenden Flaschenserver

Wenn ich versuche, Code unten

#filename: mywebapp.py 
from bottle import Bottle, run, request 

app = Bottle() 

@app.get('/hello') 
def hello(): 
    return "Hello " + request.get_header('name') 

if __name__ == '__main__': 
    run(app, host='localhost', port=80) 

Funktion Testfall mit TestApp

#filename: test_mywebapp.py 
from webtest import TestApp 
import mywebapp 

def test_functional_hello_world(): 
    app = TestApp(mywebapp.app) 
    assert app.get('/hello').status_code == 200 
    assert app.get('/hello', headers=dict(name='World!')).text == 'Hello World!' 

Als ich nosetests test_mywebapp.py betreibe ich unten eine Fehlermeldung anzeigt.

nosetests test_mywebapp.py 
E 
====================================================================== 
ERROR: test_mywebapp.test_functional_hello_world 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/private/tmp/venv/lib/python2.7/site-packages/nose/case.py", line 197, in runTest 
    self.test(*self.arg) 
    File "/private/tmp/test_mywebapp.py", line 6, in test_functional_hello_world 
    assert app.get('/hello').status_code == 200 
    File "/private/tmp/venv/lib/python2.7/site-packages/webtest/app.py", line 327, in get 
    expect_errors=expect_errors) 
    File "/private/tmp/venv/lib/python2.7/site-packages/webtest/app.py", line 636, in do_request 
    self._check_status(status, res) 
    File "/private/tmp/venv/lib/python2.7/site-packages/webtest/app.py", line 668, in _check_status 
    res) 
AppError: Bad response: 500 Internal Server Error (not 200 OK or 3xx redirect for http://localhost/hello) 

    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
    <html> 
     <head> 
      <title>Error: 500 Internal Server Error</title> 
      <style type="text/css"> 
       html {background-color: #eee; font-family: sans;} 
       body {background-color: #fff; border: 1px solid #ddd; 
        padding: 15px; margin: 15px;} 
       pre {background-color: #eee; border: 1px solid #ddd; padding: 5px;} 
      </style> 
     </head> 
     <body> 
      <h1>Error: 500 Internal Server Error</h1> 
      <p>Sorry, the requested URL <tt>&#039;http://localhost:80/hello&#039;</tt> 
       caused an error:</p> 
      <pre>Internal Server Error</pre> 
     </body> 
    </html> 


---------------------------------------------------------------------- 
Ran 1 test in 0.008s 

FAILED (errors=1) 

QuickStart auf TestApp Erwähnung.

Wenn Ihre WSGI-Anwendung eine Konfiguration erfordert, müssen Sie diese in Ihren Tests manuell auf setzen.

Wie kann ich das konfigurieren?

Es braucht, Flaschen-Server läuft, gibt es eine Möglichkeit, Flasche App ohne laufenden Server zu testen?

+0

Was lässt Sie denken, dass "Flaschenserver läuft?" Es sollte nicht. –

+0

@ ron.rothman, wenn ich diese UT ausführen, gibt es Fehler, keine Verbindung herstellen kann "http: // localhost/Login" :( – Nilesh

+0

Bitte fügen Sie die Traceback, damit wir sehen können, was passiert. Es wäre auch hilfreich zu wissen, was ist in "mywebapp". –

Antwort

1

Vielen Dank für die Buchung der Stack-Trace. Es zeigt deutlich, dass dies die Linie, die die 500 verursacht:

assert app.get('/hello').status_code == 200 

Warum Sie nicht drucken der Wert app.get('/hello').status_code so können Sie lernen, was geschieht?

Ich bin auch ziemlich sicher, dass Sie status_int, nicht status_code überprüfen sollten.

assert app.get('/hello').status_int == 200 
+0

Danke für Hilfe, ich ändere Code 'return" Hallo "+ request.get_header ('name', '')' und seine Werke. :) – Nilesh

-2

Ihre Frage ergibt keinen Sinn. Wie können Sie eine Web-App testen, ohne eine Web-Engine zum Testen zu verwenden? Sie können jede Funktion testen, die Daten außerhalb von bottle manipuliert, aber das Generieren eines 200-Status oder das Empfangen eines post-Befehls erfordert inhärent, dass eine Web-Engine ausgeführt wird?

Es wäre wie das Testen der Post, ohne einen Brief in den Briefkasten zu legen.

+0

http://docs.pylonsproject.org/projects/webtest/en/latest/#what-this-does –