Прежде всего, извините, если язык не на 100% правильный или что-то не имеет смысла на 100%, я совершенно новичок в разработке веб-приложений и публикации в целом о переполнении стека.
У меня есть приложение web.py, и мне нужно проверить его функциональность с помощью pytest и сгенерировать отчет о покрытии кода с помощью pytest-cov
. Я заставляю тесты работать и утверждать ответы, но когда я генерирую отчет о коде, все строки кода внутри методов раскрываются и, следовательно, получают очень низкий охват тестами (23%)
Я успешно запускаю pytest --cov
в своем хранилище через cmd и получаю в результате результат покрытия. Но затем я попытался использовать coverage run -m pytest test_Server.py
и запустить coverage report
, чтобы получить немного больше деталей.
В этом отчете я могу увидеть, какие строки кода мне не хватало, и я пропустил все из них, кроме определения каждого метода / класса.
Еще одна вещь, которую я попробовал, это pytest --cov=Server.py
, которая дает мне ошибку
Coverage.py warning: Module Server.py was never imported. (module-not-imported)
Coverage.py warning: No data was collected. (no-data-collected)
WARNING: Failed to generate report: No data to report.
Server.py
import os
import web
URLS = ("/", "Index")
APP = web.application(URLS, globals())
class Index:
"""
Just a test echo server.
"""
def POST(self):
web.header("Access-Control-Allow-Origin", "*")
data = web.data()
return data
test_Server.py
from paste.fixture import TestApp
import pytest
import os
import sys
sys.path.insert(1,(os.path.join(sys.path[0],'..'))) #adding parent path to import server script
import Server as lm
from Server import APP as app, Index
host = "localHost:9999"
class TestRig():
def test_server_setup(self):
middleware = []
testApp = TestApp(app.wsgifunc(*middleware))
try:
r = testApp.post("http://%s/" %host)
print ("request:", r.status)
assert r.status == 200
except TypeError:
print ("Request failed. Status:"+ r.status)
raise
Это очень упрощенная версия того, что я сейчас выполняю, и мне так или иначе удается заставить тесты работать и правильно утверждать ответы.
Я ожидаю, что код внутри методов будет покрыт тестами, но фактический вывод говорит мне, что охватывается только определение метода и ничего больше.