Rumah >pembangunan bahagian belakang >Tutorial Python >Menambah arahan pytest pada Django manage.py

Menambah arahan pytest pada Django manage.py

Barbara Streisand
Barbara Streisandasal
2024-11-01 14:55:29719semak imbas

Adding pytest command to Django manage.py

Cara pilihan untuk memanggil pytest adalah melalui arahan pytest. Malah apl pytest-django tidak menyediakan arahan pengurusan untuk memanggil pytest.

Tetapi saya lebih suka menggunakan projek django saya melalui satu tempat, iaitu skrip manage.py pada akar projek. Jadi saya hanya menambahnya pada skrip:-

#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
import pathlib
import subprocess

def main():
    BASE_DIR = pathlib.Path(__file__).parent.absolute()
    sys.path[0] = str(BASE_DIR / "src")

    """Run administrative tasks."""
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "medan.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

    # wrap pytest command here so we don't have to manage
    # PYTHONPATH in multiple places. django-pytest unfortunately
    # doesn't provide native management commands so we still need
    # to invoke pytest directly
    if len(sys.argv) > 1 and sys.argv[1] == "pytest":
        pytest_args = " ".join(sys.argv[2:])
        os.environ["PYTHONPATH"] = sys.path[0]
        subprocess.run(f".venv/bin/pytest {pytest_args}", shell=True, env=os.environ)
    else:
        execute_from_command_line(sys.argv)


if __name__ == "__main__":
    main()

Ini membolehkan kami menjalankan pytest sebagai:-

poetry run python manage.py pytest -s -x ./path/to/tests/test_*.py

Atas ialah kandungan terperinci Menambah arahan pytest pada Django manage.py. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn