Mon pytest.ini
a le contenu suivant :
[pytest]
DJANGO_SETTINGS_MODULE = project.settings_pytest
addopts = --doctest-modules --cov=. --cov-report html:./coverage/python/html
norecursedirs = .git .venv .vscode node_modules
Je pense que le chemin de type Unix transmis à --cov-report
fait planter la dernière version de pytest-django sous Windows. (Parce que c'est dans un fichier .ini
, je ne connais aucun moyen indépendant de la plate-forme de le spécifier).
Voici le traceback qui s'affiche lors de l'exécution de 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'
Cela semble être dû au passage à pathlib.
/cc @voidus
Essayez --cov-report=html:./coverage/python/html
comme solution de contournement.
Salut j'ai aussi le problème avec pytest .\app\tests.py::WebServiceTest
La solution de contournement fonctionne-t-elle ?
salut
OSError : [WinError 123] Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch : 'app\tests.py::WebServiceTest'
(le texte d'erreur est en allemand)
Et voici mon fichier pytest.ini. Pas de trucs de couverture.
[pytest]
DJANGO_SETTINGS_MODULE = DjangoBasisLager.settings
python_files = tests.py tests_*.py *_tests.py
Le problème vient du chemin d'accès au fichier de test.
Journal d'erreurs complet :
(DjangoBasisLager--RYvLsCA) PS C:UsersLubitzworkspacebasislagerDjangoBasisLager> pytest .\app\tests.py::WebServiceTest
Traceback (appel le plus récent en dernier) :
Fichier "C:Program FilesPython36Librunpy.py", ligne 193, dans _run_module_as_main
"__main__", mod_spec)
Fichier "C:Program FilesPython36Librunpy.py", ligne 85, dans _run_code
exec(code, run_globals)
Fichier "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAScriptspytest.exe__main__.py", ligne 9, dans
Fichier "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", ligne 56, dans main
config = _prepareconfig(args, plugins)
Fichier "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", ligne 181, dans _prepareconfig
pluginmanager=pluginmanager, args=args
Fichier "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggyhooks.py", ligne 258, dans __call__
return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
Fichier "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py", ligne 67, dans _hookexec
return self._inner_hookexec(hook, méthodes, kwargs)
Fichier "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py", ligne 61, dans
firstresult=hook.spec_opts.get('firstresult'),
Fichier "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggycallers.py", ligne 196, dans _multicall
gen.send (résultat)
Fichier "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytesthelpconfig.py", ligne 89, dans pytest_cmdline_parse
config = resultat.get_result()
Fichier "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggycallers.py", ligne 76, dans get_result
augmenter ex[1].with_traceback(ex[2])
Fichier "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggycallers.py", ligne 180, dans _multicall
res = hook_impl.function( args)Fichier "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", ligne 617, dans pytest_cmdline_parseself.parse(args)Fichier "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", ligne 782, en parseself._preparse(args, addopts=addopts)Fichier "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", ligne 744, dans _preparseearly_config=self, args=args, parser=self._parserFichier "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggyhooks.py", ligne 258, dans __call__return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)Fichier "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py", ligne 67, dans _hookexecreturn self._inner_hookexec(hook, méthodes, kwargs)Fichier "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py", ligne 61, dans
Fichier "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py", ligne 209, dans pytest_load_initial_conftests
_django_project_scan_outcome = _add_django_project_to_path(args)
Fichier "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py", ligne 140, dans _add_django_project_to_path
project_dir = find_django_path(args)
Fichier "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py", ligne 127, dans find_django_path
args = [p pour p dans args si p.is_dir()]
Fichier "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py", ligne 127, dans
args = [p pour p dans args si p.is_dir()]
Fichier "C:Program FilesPython36Libpathlib.py", ligne 1346, dans is_dir
renvoie S_ISDIR(self.stat().st_mode)
Fichier "C:Program FilesPython36Libpathlib.py", ligne 1156, dans stat
retourner self._accessor.stat(self)
Fichier "C:Program FilesPython36Libpathlib.py", ligne 387, en wrap
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, je vois... il se déclenche pour vous pour un argument normal.
@voidu
Pouvez-vous envisager de résoudre ce problème, s'il vous plaît?
Bonjour, puis-je aider de quelque manière que ce soit à résoudre le problème ? Y a-t-il un brunch que je peux tester ou dois-je examiner le problème pour le résoudre ?
@pinguin999
Rien à tester.
Il est lié au code pathlib en cours d'ajout (voir votre stacktrace).
Ce serait formidable si vous pouviez fournir une solution à un RP.
@pinguin999 Je ne sais pas exactement quelle est la cause de cette erreur, mais je soupçonne que la spécification de la classe de test ( ::WebServiceTest
) pourrait l'être.
J'ai créé une branche où cette partie est séparée avant d'exécuter les tests et ce serait formidable si vous pouviez l'essayer, car je n'ai pas de machine Windows avec une configuration de développement disponible. Vous pouvez le trouver dans la branche oserror_pathlib
de mon fork à l' adresse https://github.com/voidus/pytest-django.
https://github.com/voidus/pytest-django/tree/oserror_pathlib
Oui, apparemment, le ":" dans l'argument se sauve sous Windows.
Je pense que votre patch est bon, j'ai créé https://github.com/pytest-dev/pytest-django/pull/648 avec.
salut
désolé j'étais en vacances.
J'ai mis à jour vers 3.4.3 et ça marche.
Merci
# supprime cette ligne de code ====== 'module_name',
de la liste INSTALLED_APPS
Bon ça m'est arrivé aussi.
Assurez-vous d'abord que vous démarrez l'application dans le dossier du projet
par exemple :
"django-admin startproject website
site de CD
django-admin startapp musique"