Mein pytest.ini
hat folgenden Inhalt:
[pytest]
DJANGO_SETTINGS_MODULE = project.settings_pytest
addopts = --doctest-modules --cov=. --cov-report html:./coverage/python/html
norecursedirs = .git .venv .vscode node_modules
Ich glaube, dass der an --cov-report
Unix-ähnliche Pfad dazu führt, dass die neueste Version von pytest-django unter Windows abstürzt. (Da es sich in einer .ini
Datei befindet, kenne ich keine plattformunabhängige Möglichkeit, es anzugeben).
Hier ist der Traceback, der angezeigt wird, wenn pytest
:
Traceback (most recent call last):
File "C:\Program Files\Python37\Lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "C:\Program Files\Python37\Lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\Atul\.virtualenvs\tenants2-Gxdtcl1v\Scripts\pytest.exe\__main__.py", line 9, in <module>
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\_pytest\config\__init__.py", line 55, in main
config = _prepareconfig(args, plugins)
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\_pytest\config\__init__.py", line 180, in _prepareconfig
pluginmanager=pluginmanager, args=args
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\hooks.py", line 258, in __call__
return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\manager.py", line 67, in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\manager.py", line 61, in <lambda>
firstresult=hook.spec_opts.get('firstresult'),
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\callers.py", line 196, in _multicall
gen.send(outcome)
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\_pytest\helpconfig.py", line 89, in pytest_cmdline_parse
config = outcome.get_result()
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\callers.py", line 76, in get_result
raise ex[1].with_traceback(ex[2])
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\callers.py", line 180, in _multicall
res = hook_impl.function(*args)
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\_pytest\config\__init__.py", line 612, in pytest_cmdline_parse
self.parse(args)
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\_pytest\config\__init__.py", line 777, in parse
self._preparse(args, addopts=addopts)
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\_pytest\config\__init__.py", line 739, in _preparse
early_config=self, args=args, parser=self._parser
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\hooks.py", line 258, in __call__
return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\manager.py", line 67, in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\manager.py", line 61, in <lambda>
firstresult=hook.spec_opts.get('firstresult'),
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\callers.py", line 201, in _multicall
return outcome.get_result()
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\callers.py", line 76, in get_result
raise ex[1].with_traceback(ex[2])
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pluggy\callers.py", line 180, in _multicall
res = hook_impl.function(*args)
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pytest_django\plugin.py", line 209, in pytest_load_initial_conftests
_django_project_scan_outcome = _add_django_project_to_path(args)
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pytest_django\plugin.py", line 140, in _add_django_project_to_path
project_dir = find_django_path(args)
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pytest_django\plugin.py", line 127, in find_django_path
args = [p for p in args if p.is_dir()]
File "c:\users\atul\.virtualenvs\tenants2-gxdtcl1v\lib\site-packages\pytest_django\plugin.py", line 127, in <listcomp>
args = [p for p in args if p.is_dir()]
File "C:\Program Files\Python37\Lib\pathlib.py", line 1330, in is_dir
return S_ISDIR(self.stat().st_mode)
File "C:\Program Files\Python37\Lib\pathlib.py", line 1140, in stat
return self._accessor.stat(self)
OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: 'html:.\\coverage\\python\\html'
Scheint an der Umstellung auf pathlib zu liegen.
/cc @voidus
Versuchen Sie es mit --cov-report=html:./coverage/python/html
als Problemumgehung.
Hallo, ich habe auch das Problem mit pytest .\app\tests.py::WebServiceTest
Funktioniert die Problemumgehung?
Hallo
OSError: [WinError 123] Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch: 'app\tests.py::WebServiceTest'
(Fehlertext ist deutsch)
Und das ist meine pytest.ini-Datei. Keine Deckungssachen.
[pytest]
DJANGO_SETTINGS_MODULE = DjangoBasisLager.settings
python_files = tests.py tests_*.py *_tests.py
Das Problem liegt am Pfad zur Testdatei.
Vollständiges Fehlerprotokoll:
(DjangoBasisLager--RYvLsCA) PS C:UsersLubitzworkspacebasislagerDjangoBasisLager> pytest .\app\tests.py::WebServiceTest
Traceback (letzter Anruf zuletzt):
Datei "C:Program FilesPython36Librunpy.py", Zeile 193, in _run_module_as_main
"__main__", mod_spec)
Datei "C:ProgrammePython36Librunpy.py", Zeile 85, in _run_code
exec(code, run_globals)
Datei "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAScriptspytest.exe__main__.py", Zeile 9, in
Datei "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", Zeile 56, in main
config = _prepareconfig(Argumente, Plugins)
Datei "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", Zeile 181, in _prepareconfig
pluginmanager=pluginmanager, args=args
Datei "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggyhooks.py", Zeile 258, in __call__
return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
Datei "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py", Zeile 67, in _hookexec
return self._inner_hookexec(Hook, Methoden, Kwargs)
Datei "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py", Zeile 61, in
firstresult=hook.spec_opts.get('firstresult'),
Datei "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggycallers.py", Zeile 196, in _multicall
gen.senden (Ergebnis)
Datei "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytesthelpconfig.py", Zeile 89, in pytest_cmdline_parse
config = result.get_result()
Datei "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggycallers.py", Zeile 76, in get_result
erhöhen ex[1].with_traceback(ex[2])
Datei "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggycallers.py", Zeile 180, in _multicall
res = hook_impl.function( args)Datei "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", Zeile 617, in pytest_cmdline_parseself.parse(args)Datei "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", Zeile 782, in Parseself._preparse(args, addopts=addopts)Datei "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", Zeile 744, in _preparsefrühe_config=self, args=args, parser=self._parserDatei "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggyhooks.py", Zeile 258, in __call__return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)Datei "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py", Zeile 67, in _hookexecreturn self._inner_hookexec(Hook, Methoden, Kwargs)Datei "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py", Zeile 61, in
Datei "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py", Zeile 209, in pytest_load_initial_conftests
_django_project_scan_outcome = _add_django_project_to_path(args)
Datei "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py", Zeile 140, in _add_django_project_to_path
project_dir = find_django_path(args)
Datei "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py", Zeile 127, in find_django_path
args = [p für p in args if p.is_dir()]
Datei "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py", Zeile 127, in
args = [p für p in args if p.is_dir()]
Datei "C:Program FilesPython36Libpathlib.py", Zeile 1346, in is_dir
S_ISDIR(self.stat().st_mode) zurückgeben
Datei "C:Program FilesPython36Libpathlib.py", Zeile 1156, in stat
return self._accessor.stat(self)
Datei "C:Program FilesPython36Libpathlib.py", Zeile 387, verpackt
return strfunc(str(pathobj), *args)
OSError: [WinError 123] Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch: 'app\tests.py::WebServiceTest'
Ah, ich verstehe.. es wird für Sie für ein normales Argument ausgelöst.
@voidus
Können Sie das bitte beheben?
Hallo, kann ich irgendwie helfen das Problem zu beheben? Gibt es einen Brunch, den ich testen kann oder sollte ich das Problem untersuchen, um es zu beheben?
@pinguin999
Nichts zu testen.
Es hängt mit dem hinzugefügten pathlib-Code zusammen (siehe Ihren Stacktrace).
Wäre toll, wenn du eine PR mit einem Fix zur Verfügung stellen könntest.
@pinguin999 Ich bin mir nicht ganz sicher, was die Ursache für diesen Fehler ist, aber ich vermute, dass die ::WebServiceTest
) daran liegen könnte.
Ich habe einen Zweig erstellt, in dem dieser Teil vor dem Ausführen der Tests abgespalten wird, und es wäre großartig, wenn Sie ihn ausprobieren könnten, da ich keinen Windows-Rechner mit einem verfügbaren Entwickler-Setup habe. Sie finden es im Zweig oserror_pathlib
in meinem Fork unter https://github.com/voidus/pytest-django.
https://github.com/voidus/pytest-django/tree/oserror_pathlib
Ja, anscheinend rettet das ":" im Arg unter Windows.
Ich denke, dein Patch ist in Ordnung, ich habe damit https://github.com/pytest-dev/pytest-django/pull/648 erstellt.
Hallo
tut mir leid, dass ich im Urlaub war.
Ich habe auf 3.4.3 aktualisiert und es funktioniert.
Danke
# diese Codezeile entfernen ====== 'Modulname',
aus der INSTALLED_APPS-Liste
Nun, das ist mir auch passiert.
Stellen Sie zunächst sicher, dass Sie die App im Projektordner starten
für zB:
"django-admin startproject website
CD-Website
django-admin startapp musik"