pytest.ini
memiliki konten berikut:
[pytest]
DJANGO_SETTINGS_MODULE = project.settings_pytest
addopts = --doctest-modules --cov=. --cov-report html:./coverage/python/html
norecursedirs = .git .venv .vscode node_modules
Saya percaya jalur mirip Unix yang diteruskan ke --cov-report
menyebabkan versi terbaru pytest-Django mogok di Windows. (Karena ada dalam file .ini
, saya tidak tahu cara independen platform untuk menentukannya).
Berikut traceback yang ditampilkan saat menjalankan 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'
Tampaknya karena beralih ke pathlib.
/cc @voidus
Coba --cov-report=html:./coverage/python/html
sebagai solusi.
Hai, saya juga punya masalah dengan pytest .\app\tests.py::WebServiceTest
Apakah solusinya berhasil?
Hai
OSError: [WinError 123] Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch: 'app\tests.py::WebServiceTest'
(teks kesalahan dalam bahasa Jerman)
Dan ini adalah file pytest.ini saya. Tidak ada barang liputan.
[uji coba]
Django_SETTINGS_MODULE = DjangoBasisLager.settings
python_files = tes.py tes_*.py *_tests.py
Masalahnya adalah dengan jalur ke file uji.
Log kesalahan lengkap:
(DjangoBasisLager--RYvLsCA) PS C:UsersLubitzworkspacebasislagerDjangoBasisLager> pytest .\app\tests.py::WebServiceTest
Traceback (panggilan terakhir terakhir):
File "C:Program FilesPython36Librunpy.py", baris 193, di _run_module_as_main
"__main__", mod_spec)
File "C:Program FilesPython36Librunpy.py", baris 85, di _run_code
exec(kode, run_globals)
File "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAScriptspytest.exe__main__.py", baris 9, di
File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", baris 56, di main
config = _prepareconfig(args, plugins)
File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", baris 181, di _prepareconfig
pluginmanager=pengelola plugin, args=args
Berkas "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggyhooks.py", baris 258, di __call__
kembalikan self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
Berkas "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py", baris 67, di _hookexec
kembalikan self._inner_hookexec(kait, metode, kwargs)
Berkas "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py", baris 61, di
firstresult=hook.spec_opts.get('firstresult'),
File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggycallers.py", baris 196, di _multicall
gen.send(hasil)
File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytesthelpconfig.py", baris 89, di pytest_cmdline_parse
konfigurasi = hasil.get_result()
File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggycallers.py", baris 76, di get_result
naikkan ex[1].with_traceback(ex[2])
File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggycallers.py", baris 180, di _multicall
res = hook_impl.function( args)File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", baris 617, di pytest_cmdline_parsediri.parse(args)File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", baris 782, di parseself._preparse(args, addopts=addopts)File "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packages_pytestconfig__init__.py", baris 744, di _preparseearly_config=self, args=args, parser=self._parserBerkas "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggyhooks.py", baris 258, di __call__kembalikan self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)Berkas "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py", baris 67, di _hookexeckembalikan self._inner_hookexec(kait, metode, kwargs)Berkas "c:userslubitz.virtualenvsdjangobasislager--ryvlscalibsite-packagespluggymanager.py", baris 61, di
Berkas "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py", baris 209, di pytest_load_initial_conftests
_django_project_scan_outcome = _add_django_project_to_path(args)
Berkas "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py", baris 140, di _add_django_project_to_path
project_dir = temukan_django_path(args)
Berkas "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py", baris 127, di find_django_path
args = [p untuk p dalam args jika p.is_dir()]
Berkas "C:UsersLubitz.virtualenvsDjangoBasisLager--RYvLsCAlibsite-packagespytest_djangoplugin.py", baris 127, di
args = [p untuk p dalam args jika p.is_dir()]
File "C:Program FilesPython36Libpathlib.py", baris 1346, di is_dir
kembali S_ISDIR(self.stat().st_mode)
File "C:Program FilesPython36Libpathlib.py", baris 1156, dalam status
kembalikan self._accessor.stat(self)
File "C:Program FilesPython36Libpathlib.py", baris 387, dibungkus in
kembali 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, begitu.. itu dipicu untukmu untuk argumen normal.
@voidus
Dapatkah Anda melihat ke dalam memperbaiki ini, please?
Hai, bisakah saya membantu dengan cara apa pun untuk memperbaiki masalah? Apakah ada brunch yang bisa saya uji atau haruskah saya melihat Masalah untuk memperbaikinya?
@pinguin999
Tidak ada yang perlu diuji.
Ini terkait dengan kode pathlib yang ditambahkan (lihat stacktrace Anda).
Akan lebih bagus jika Anda bisa memberikan PR dengan perbaikan.
@pinguin999 Saya tidak yakin apa penyebab kesalahan ini, tetapi saya menduga bahwa spesifikasi kelas pengujian ( ::WebServiceTest
) mungkin itu.
Saya membuat cabang di mana bagian itu dipisah sebelum menjalankan tes dan akan sangat bagus jika Anda bisa mencobanya, karena saya tidak memiliki mesin windows dengan pengaturan dev yang tersedia. Anda dapat menemukannya di cabang oserror_pathlib
di garpu saya di https://github.com/voidus/pytest-Django.
https://github.com/voidus/pytest-Django/tree/oserror_pathlib
Ya, ternyata ":" di arg bail out di Windows.
Saya pikir tambalan Anda baik-baik saja, saya telah membuat https://github.com/pytest-dev/pytest-Django/pull/648 dengannya.
Hai
maaf saya sedang libur.
Saya memperbarui ke 3.4.3 dan berfungsi.
Terima kasih
# hapus baris kode ini ====== 'module_name',
dari daftar INSTALLED_APPS
Nah ini juga terjadi pada saya.
Pertama-tama pastikan Anda memulai aplikasi di folder proyek
untuk misalnya:
"situs web proyek awal django-admin
situs web cd
musik startapp django-admin"