In Letztes Mal habe ich die Abdeckung einer einfachen Funktion mit pytest-cov überprüft. Lassen Sie uns prüfen, ob die Abdeckung auch mit pytest-cov im Kolben überprüft werden kann.
Um pytest-cov verwenden zu können, benötigen Sie ein Testziel und eine Testquelle. Erstellen Sie diese also. Wenn Sie dies nicht verstehen, lesen Sie bitte [Test eines Kolbens mit Pytest durchführen].
Die zu testende Quelle ändert sich, um Sie zu sehen, wenn die erfasste Nachricht Tschüss ist, und gibt die Nachricht so zurück, wie sie zu anderen Zeiten ist.
flask_mod.py
from flask import Flask, jsonify
import datetime
app = Flask(__name__)
@app.route('/greeting/<message>')
def sample(message):
if message == 'bye':
message = 'see you'
return message
Ich habe zwei Testquellen mit Message Bye und anderen Mustern erstellt. Wenn der Header korrekt ist, ist das b (binär) der Antwort b'see you'n nicht erforderlich.
pytest_flask_fixture.py
import pytest
from flask_mod import app
@pytest.fixture
def client():
app.config['TESTING'] = True
test_client = app.test_client()
yield test_client
test_client.delete()
def test_greeting_bye(client):
result = client.get('/greeting/bye')
assert b'see you' == result.data
def test_greeting_hello(client):
result = client.get('/greeting/hello')
assert b'hello' == result.data
Nachdem Sie die Quelle des Testziels und der Testmethode gefunden haben, führen Sie sie aus.
# pytest --cov --cov-branch -v pytest_flask_fixture.py
~~~~ Abkürzung ~~~~~
collected 2 items
pytest_flask_fixture.py .. [100%]
----------- coverage: platform win32, python 3.6.5-final-0 -----------
Name Stmts Miss Branch BrPart Cover
---------------------------------------------------------------
flask_mod.py 7 0 2 0 100%
pytest_flask_fixture.py 13 0 0 0 100%
---------------------------------------------------------------
TOTAL 20 0 2 0 100%
====== 2 passed in 0.74s ======
Wenn Sie sich die Ergebnisse ansehen, können Sie sehen, dass der Kolben auch getestet werden kann, da der Zweig von `flax_mod.py
`, der die Verarbeitung des Kolbens geschrieben hat, 2 und die Abdeckung 100% ist.
Sie können pytest mit einem Befehl eingeben, aber es gibt auch eine Methode, die mit VS-Code ausgeführt werden kann, sodass ich sie zusammenfassen werde.
`pytest.ini
`im Testquellverzeichnis. (Name ist fest) pytest.ini
[pytest]
junit_family = legacy
addopts = -ra -q --cov --cov-branch
Es scheint, dass der Dateiname der Testquelle mit test beginnen muss, z. B. testXXXX.
Ich konnte bestätigen, dass Pytest-Cov auch mit Kolben möglich ist. WEB-Dienste unterliegen drastischen Änderungen und Korrekturen, und es gibt APIs und WEB-Seiten für das Ziel, sodass schlechte Korrekturen andere Standorte betreffen können. Aus diesem Grund wird die Testautomatisierung verbessert, aber gleichzeitig denke ich, dass genauere Tests zur Bestätigung der Auswirkungen durchgeführt werden können, wenn die Abdeckung überprüft wird.
Recommended Posts