我現在使用覆寫包已經有一段時間了,它運行良好,直到昨天它只是在生成我認為的報告級別失敗。功能上沒有任何變化,這更奇怪。
我有以下coveragerc檔案:
[run]
source = .
branch = True
concurrency = multiprocessing
omit =
manage.py
config/asgi.py
config/wsgi.py
config/settings.py
*/migrations/*
*test*
[report]
show_missing = True
skip_covered = True
和 Django manage.py 檔案如下:
import os
import sys
COVERAGE_ACCCEPTANCE = 85
def main():
argv = sys.argv
try:
command = argv[1]
except IndexError:
command = "help"
default_settings = "config.settings"
running_tests = (command == "test")
if running_tests:
default_settings = "config.settings_test"
from coverage import Coverage
cov = Coverage()
cov.erase()
cov.start()
os.environ.setdefault("DJANGO_SETTINGS_MODULE", default_settings)
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?",
) from exc
execute_from_command_line(argv)
if running_tests:
cov.stop()
cov.save()
cov.combine()
if round(cov.report()) < COVERAGE_ACCCEPTANCE:
sys.exit(1)
cov.erase()
if __name__ == "__main__":
main()
測驗成功運行后,覆寫率會引發以下錯誤:
Ran 317 tests in 96.790s
OK
Destroying test database for alias 'default'...
Traceback (most recent call last):
File "./serverX/manage.py", line 44, in <module>
main()
File "./serverX/manage.py", line 38, in main
if round(cov.report()) < COVERAGE_ACCCEPTANCE:
File "/usr/local/lib/python3.8/site-packages/coverage/control.py", line 913, in report
return reporter.report(morfs, outfile=file)
File "/usr/local/lib/python3.8/site-packages/coverage/summary.py", line 45, in report
for fr, analysis in get_analysis_to_report(self.coverage, morfs):
File "/usr/local/lib/python3.8/site-packages/coverage/report.py", line 70, in get_analysis_to_report
analysis = coverage._analyze(fr)
File "/usr/local/lib/python3.8/site-packages/coverage/control.py", line 808, in _analyze
return Analysis(data, it, self._file_mapper)
File "/usr/local/lib/python3.8/site-packages/coverage/results.py", line 20, in __init__
self.statements = self.file_reporter.lines()
File "/usr/local/lib/python3.8/site-packages/coverage/python.py", line 191, in lines
return self.parser.statements
File "/usr/local/lib/python3.8/site-packages/coverage/python.py", line 182, in parser
self._parser = PythonParser(
File "/usr/local/lib/python3.8/site-packages/coverage/parser.py", line 44, in __init__
self.text = get_python_source(self.filename)
File "/usr/local/lib/python3.8/site-packages/coverage/python.py", line 61, in get_python_source
raise NoSource(exc_msg)
coverage.misc.NoSource: No source for code: '/usr/src/server/rep-1>'.
Aborting report output, consider using -i.
1
Cleaning up project directory and file based variables 00:01
ERROR: Job failed: exit code 1
我想也許它說的檔案沒有找到 (/usr/src/server/rep-1) 是生成的報告,因為我的 repo 上沒有任何這樣的檔案。我真的很感激任何見解,因為這有點奇怪,而且我在 GitHub/stackoverflow 上的檔案或軟體包問題上找不到與此實體類似的任何內容。
我在 Django 3.1 上運行,在 GitLab 管道上的覆寫率為 5.5。
uj5u.com熱心網友回復:
我發現根本原因是attrs==21.3.0圖書館今天發布了。如果我使用版本,21.2.0則coverage report不會因為缺少表示檔案而失敗。
見https://github.com/pytest-dev/pytest/discussions/9459
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/396502.html
