Schreiben Sie Code in UnitTest, eine Python-Webanwendung

Das WebTest-Modul erleichtert das Schreiben von Code zum Testen von WSGI-basierten Webanwendungen.

Wie installiert man

Sie können es mit pip installieren.

sudo pip install webtest

Beispielcode

Das folgende Beispiel zeigt eine JSON-RPC-Serverimplementierung unter Verwendung des Flaschenframeworks.

Webanwendungsseite

app.py


from bottle import Bottle, HTTPResponse

HOST='localhost'
PORT=8080
DEBUG=True

app = Bottle()

def makeRes(code, data):
	data['retcode'] = code
	r = HTTPResponse(status=200, body=json.dumps(data))
	r.set_header('Content-Type', 'application/json')
	return r

@app.post('/aikotoba')
def api_aikotoba():
	o = request.json
	if o is None:
		return makeRes('ERR_PARAM', {})
	if not 'kotoba' in o:
		return makeRes('ERR_PARAM', {})
	if o['kotoba']=='Berg':
		return makeRes('OK', {'henji':'wie?'}
	else:
		return makeRes('OK', {'henji':'Huh?'}

if __name__=='__main__':
	app.run(host=HOST, port=PORT, debug=DEBUG, reloader=True)

UnitTest Seite

test_app.py


import unittest
import api 
from webtest import TestApp

os.environ['WEBTEST_TARGET_URL'] = 'http://localhost:8080'
test_app = TestApp(api.app)

class ApiTest(unittest.TestCase):
	def test_api_aikotoba1(self):
		res = test_app.post_json('/aikotoba',{
			'kotoba':'Berg' 
		})
		self.assertEqual(res.json['henji'], 'wie?')
	def test_api_aikotoba2(self):
		res = test_app.post_json('/aikotoba',{
			'kotoba':'Fluss' 
		})
		self.assertEqual(res.json['henji'], 'Huh?')

if __name__ == '__main__':
    unittest.main()

Testimplementierung

1. Starten Sie den Testserver.

python app.py

2. Führen Sie UnitTest aus.

python app_test.py

3. Überprüfen Sie das Ergebnis.

Das Ergebnis wird so ausgegeben.

..
----------------------------------------------------------------------
Ran 2 tests in 0.079s

OK

Wenn die Zusicherung der UnitTest-Klasse nicht übereinstimmt, sieht die Ausgabe wie folgt aus.

.F
======================================================================
FAIL: test_api_aikotoba2 (__main__.ApiTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test_app.py", line 16, in test_api_aikotoba2
    self.assertEqual(res.json['henji'], 'Huh?')
AssertionError: 'Huh?' != 'Huh?'
-Huh?
? ^
+Huh?
? ^


----------------------------------------------------------------------
Ran 2 tests in 0.126s

FAILED (failures=1)

Recommended Posts

Schreiben Sie Code in UnitTest, eine Python-Webanwendung
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
Schreiben Sie Selentestcode in Python
Qiita (1) Wie schreibe ich einen Codenamen?
Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Ist es nicht in Ordnung, Testcode zu schreiben?
[Python] Was ich getan habe, um Unit Test zu machen
Schritte zum Entwickeln einer Webanwendung in Python
Warum muss Python einen Doppelpunkt schreiben?
Ich möchte mit Python in eine Datei schreiben
Schreiben Sie Python2-Code in Python3 um (2to3)
Python-Unit-Test-Vorlage
Stellen Sie Python 3.6 / Django / Postgres-Webanwendungen in Azure bereit
Ich möchte in Python schreiben! (1) Überprüfung des Codeformats
Python Ver. Einführung in WebPay mit ein wenig Code
(Python) Versuchen Sie, eine Webanwendung mit Django zu entwickeln
Schritte von der Installation von Python 3 bis zur Erstellung einer Django-App
[Python] So schreiben Sie eine Dokumentzeichenfolge, die PEP8 entspricht
Stellen Sie eine mit Streamlit erstellte Web-App für Heroku bereit
So testen Sie eine Funktion, die die aktuelle Zeit enthält, mit Freezegun in Python
So hosten Sie die Web-App-Backend-Verarbeitung in Python mithilfe einer Leihserver-Subdomain
Schreiben Sie mit Python in csv
Konvertieren Sie Python 3.x-Code in Python 2.x.
So stellen Sie eine mit Flask erstellte Web-App für Heroku bereit
Beispiel zum Einfügen der Python Flask-Webanwendung in den Azure App Service (Webanwendung)
So starten Sie AWS Batch über die Python-Client-App
Schreiben Sie ein Python-Programm, um die Bearbeitungsentfernung [Python] [Levenshtein-Entfernung] zu ermitteln.
So schreiben Sie einen Test für die Verarbeitung mit BigQuery
So schreiben Sie eine Meta-Klasse, die sowohl Python2 als auch Python3 unterstützt
Schreiben Sie eine Dichotomie in Python
Führen Sie den Ausgabecode auf dem lokalen Webserver in Python als "A, gibt vor, B zu sein" aus
Schreiben Sie einen tabellengesteuerten Test in C.
[Python] Mit Python in eine CSV-Datei schreiben
Python: Einführung in Flask: Erstellen einer Nummernidentifizierungs-App mit MNIST
So schreiben Sie Code für den Zugriff auf Python dashDB auf Bluemix oder lokal
Schreiben Sie die Standardausgabe in eine Datei
Code, der zufällig eine Punktzahl generiert
Schreiben Sie A * (A-Stern) -Algorithmen in Python
Versuchen Sie, eine Python-Umgebung mit Visual Studio Code & WSL zu erstellen
Ich habe den Code geschrieben, um den Brainf * ck-Code in Python zu schreiben
Schreiben Sie ein Kreisdiagramm in Python
Schreiben Sie das Vim-Plugin in Python
Schreiben Sie eine Suche mit Tiefenpriorität in Python
So führen Sie einen Komponententest durch Teil 1 Entwurfsmuster zur Einführung
Ich habe ein Skript geschrieben, um Webseiten-Links in Python zu extrahieren
5 Möglichkeiten zum Erstellen eines Python-Chatbots
[Pytest] [mock] Anfänger in der Webentwicklung fassten den Unit-Test und den Mock in Python zusammen.
Schreiben Sie einen C-Sprach-Unit-Test in Python
Schreiben Sie ein Batch-Skript mit Python3.5 ~
Ich habe einen Code geschrieben, um die Quaternion mit Python in einen Ölerwinkel vom Typ z-y-x umzuwandeln
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
Lassen Sie uns JavaScript wegwerfen und ein Web-Frontend in Python schreiben!
Vorgehensweise zum Erstellen einer virtuellen Python-Umgebung mit VS-Code unter Windows
[Python] Erstellen Sie einen Linebot, um den Namen und das Alter auf das Bild zu schreiben
Schreiben Sie einen einfachen kopflosen Web-Scraping-Bot in Python mit Beautiful Soup 4