首先,很抱歉,如果术语不是 100% 正确,或者有些东西没有 100% 有意义,我对 Web 应用程序开发和在堆栈溢出上发布的文章还很陌生。
我有一个 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.
服务器.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
测试服务器.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
这是我当前正在运行的一个非常简化的版本,我设法以某种方式使测试正常工作并正确断言响应。
我期望测试覆盖方法内的代码,但实际输出告诉我只覆盖了方法的定义,没有其他内容。