Fixed #30387 -- Enhanced docs CLI examples in Unit tests and Install Django on Windows.
Follow up to 37c17846ad
.
This commit is contained in:
parent
405c836336
commit
25b5eea8cd
|
@ -2,6 +2,8 @@
|
||||||
How to install Django on Windows
|
How to install Django on Windows
|
||||||
================================
|
================================
|
||||||
|
|
||||||
|
.. highlight:: doscon
|
||||||
|
|
||||||
This document will guide you through installing Python 3.7 and Django on
|
This document will guide you through installing Python 3.7 and Django on
|
||||||
Windows. It also provides instructions for installing `virtualenv`_ and
|
Windows. It also provides instructions for installing `virtualenv`_ and
|
||||||
`virtualenvwrapper`_, which make it easier to work on Python projects. This is
|
`virtualenvwrapper`_, which make it easier to work on Python projects. This is
|
||||||
|
@ -21,13 +23,18 @@ machine. At the time of writing, Python 3.7 is the latest version.
|
||||||
|
|
||||||
To install Python on your machine go to https://python.org/downloads/. The
|
To install Python on your machine go to https://python.org/downloads/. The
|
||||||
website should offer you a download button for the latest Python version.
|
website should offer you a download button for the latest Python version.
|
||||||
Download the executable installer and run it. Check the box next to ``Add
|
Download the executable installer and run it. Check the boxes next to ``Install
|
||||||
Python 3.7 to PATH`` and then click ``Install Now``.
|
launcher for all users (recommended)`` and ``Add Python 3.7 to PATH`` then
|
||||||
|
click ``Install Now``.
|
||||||
|
|
||||||
After installation, open the command prompt and check that the Python version
|
After installation, open the command prompt and check that the Python version
|
||||||
matches the version you installed by executing::
|
matches the version you installed by executing::
|
||||||
|
|
||||||
python --version
|
...\> py --version
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
|
||||||
|
For more details, see :doc:`python:using/windows` documentation.
|
||||||
|
|
||||||
About ``pip``
|
About ``pip``
|
||||||
=============
|
=============
|
||||||
|
@ -42,6 +49,8 @@ get-pip.py`` instructions.
|
||||||
|
|
||||||
.. _pip: https://pypi.org/project/pip/
|
.. _pip: https://pypi.org/project/pip/
|
||||||
|
|
||||||
|
.. _virtualenvwrapper-win:
|
||||||
|
|
||||||
Install ``virtualenv`` and ``virtualenvwrapper``
|
Install ``virtualenv`` and ``virtualenvwrapper``
|
||||||
================================================
|
================================================
|
||||||
|
|
||||||
|
@ -50,17 +59,17 @@ each Django project you create. While not mandatory, this is considered a best
|
||||||
practice and will save you time in the future when you're ready to deploy your
|
practice and will save you time in the future when you're ready to deploy your
|
||||||
project. Simply type::
|
project. Simply type::
|
||||||
|
|
||||||
python -m pip install virtualenvwrapper-win
|
...\> py -m pip install virtualenvwrapper-win
|
||||||
|
|
||||||
Then create a virtual environment for your project::
|
Then create a virtual environment for your project::
|
||||||
|
|
||||||
mkvirtualenv myproject
|
...\> mkvirtualenv myproject
|
||||||
|
|
||||||
The virtual environment will be activated automatically and you'll see
|
The virtual environment will be activated automatically and you'll see
|
||||||
"(myproject)" next to the command prompt to designate that. If you start a new
|
"(myproject)" next to the command prompt to designate that. If you start a new
|
||||||
command prompt, you'll need to activate the environment again using::
|
command prompt, you'll need to activate the environment again using::
|
||||||
|
|
||||||
workon myproject
|
...\> workon myproject
|
||||||
|
|
||||||
.. _virtualenv: https://pypi.org/project/virtualenv/
|
.. _virtualenv: https://pypi.org/project/virtualenv/
|
||||||
.. _virtualenvwrapper: https://pypi.org/project/virtualenvwrapper-win/
|
.. _virtualenvwrapper: https://pypi.org/project/virtualenvwrapper-win/
|
||||||
|
@ -73,7 +82,7 @@ Django can be installed easily using ``pip`` within your virtual environment.
|
||||||
In the command prompt, ensure your virtual environment is active, and execute
|
In the command prompt, ensure your virtual environment is active, and execute
|
||||||
the following command::
|
the following command::
|
||||||
|
|
||||||
python -m pip install django
|
...\> py -m pip install Django
|
||||||
|
|
||||||
This will download and install the latest Django release.
|
This will download and install the latest Django release.
|
||||||
|
|
||||||
|
@ -92,9 +101,9 @@ Common pitfalls
|
||||||
running Python scripts in ``PATH``. This usually occurs when there is more
|
running Python scripts in ``PATH``. This usually occurs when there is more
|
||||||
than one Python version installed.
|
than one Python version installed.
|
||||||
|
|
||||||
* If you are connecting to the internet behind a proxy, there might be problem
|
* If you are connecting to the internet behind a proxy, there might be problems
|
||||||
in running the command ``python -m pip install django``. Set the environment
|
in running the command ``py -m pip install Django``. Set the environment
|
||||||
variables for proxy configuration in the command prompt as follows::
|
variables for proxy configuration in the command prompt as follows::
|
||||||
|
|
||||||
set http_proxy=http://username:password@proxyserver:proxyport
|
...\> set http_proxy=http://username:password@proxyserver:proxyport
|
||||||
set https_proxy=https://username:password@proxyserver:proxyport
|
...\> set https_proxy=https://username:password@proxyserver:proxyport
|
||||||
|
|
|
@ -2,8 +2,6 @@
|
||||||
Unit tests
|
Unit tests
|
||||||
==========
|
==========
|
||||||
|
|
||||||
.. highlight:: console
|
|
||||||
|
|
||||||
Django comes with a test suite of its own, in the ``tests`` directory of the
|
Django comes with a test suite of its own, in the ``tests`` directory of the
|
||||||
code base. It's our policy to make sure all tests pass at all times.
|
code base. It's our policy to make sure all tests pass at all times.
|
||||||
|
|
||||||
|
@ -26,7 +24,9 @@ First, `fork Django on GitHub <https://github.com/django/django/fork>`__.
|
||||||
Second, create and activate a virtual environment. If you're not familiar with
|
Second, create and activate a virtual environment. If you're not familiar with
|
||||||
how to do that, read our :doc:`contributing tutorial </intro/contributing>`.
|
how to do that, read our :doc:`contributing tutorial </intro/contributing>`.
|
||||||
|
|
||||||
Next, clone your fork, install some requirements, and run the tests::
|
Next, clone your fork, install some requirements, and run the tests:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ git clone git@github.com:YourGitHubName/django.git django-repo
|
$ git clone git@github.com:YourGitHubName/django.git django-repo
|
||||||
$ cd django-repo/tests
|
$ cd django-repo/tests
|
||||||
|
@ -50,11 +50,6 @@ settings module that uses the SQLite database. See
|
||||||
:ref:`running-unit-tests-settings` to learn how to use a different settings
|
:ref:`running-unit-tests-settings` to learn how to use a different settings
|
||||||
module to run the tests with a different database.
|
module to run the tests with a different database.
|
||||||
|
|
||||||
.. admonition:: Windows users
|
|
||||||
|
|
||||||
We recommend something like `Git Bash <https://msysgit.github.io/>`_ to run
|
|
||||||
the tests using the above approach.
|
|
||||||
|
|
||||||
Having problems? See :ref:`troubleshooting-unit-tests` for some common issues.
|
Having problems? See :ref:`troubleshooting-unit-tests` for some common issues.
|
||||||
|
|
||||||
Running tests using ``tox``
|
Running tests using ``tox``
|
||||||
|
@ -66,7 +61,9 @@ checks that our build server performs on pull requests. To run the unit tests
|
||||||
and other checks (such as :ref:`import sorting <coding-style-imports>`, the
|
and other checks (such as :ref:`import sorting <coding-style-imports>`, the
|
||||||
:ref:`documentation spelling checker <documentation-spelling-check>`, and
|
:ref:`documentation spelling checker <documentation-spelling-check>`, and
|
||||||
:ref:`code formatting <coding-style-python>`), install and run the ``tox``
|
:ref:`code formatting <coding-style-python>`), install and run the ``tox``
|
||||||
command from any place in the Django source tree::
|
command from any place in the Django source tree:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ python -m pip install tox
|
$ python -m pip install tox
|
||||||
$ tox
|
$ tox
|
||||||
|
@ -75,7 +72,9 @@ By default, ``tox`` runs the test suite with the bundled test settings file for
|
||||||
SQLite, ``flake8``, ``isort``, and the documentation spelling checker. In
|
SQLite, ``flake8``, ``isort``, and the documentation spelling checker. In
|
||||||
addition to the system dependencies noted elsewhere in this documentation,
|
addition to the system dependencies noted elsewhere in this documentation,
|
||||||
the command ``python3`` must be on your path and linked to the appropriate
|
the command ``python3`` must be on your path and linked to the appropriate
|
||||||
version of Python. A list of default environments can be seen as follows::
|
version of Python. A list of default environments can be seen as follows:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ tox -l
|
$ tox -l
|
||||||
py3
|
py3
|
||||||
|
@ -91,7 +90,9 @@ for other versions of Python and other database backends. Since Django's test
|
||||||
suite doesn't bundle a settings file for database backends other than SQLite,
|
suite doesn't bundle a settings file for database backends other than SQLite,
|
||||||
however, you must :ref:`create and provide your own test settings
|
however, you must :ref:`create and provide your own test settings
|
||||||
<running-unit-tests-settings>`. For example, to run the tests on Python 3.7
|
<running-unit-tests-settings>`. For example, to run the tests on Python 3.7
|
||||||
using PostgreSQL::
|
using PostgreSQL:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ tox -e py37-postgres -- --settings=my_postgres_settings
|
$ tox -e py37-postgres -- --settings=my_postgres_settings
|
||||||
|
|
||||||
|
@ -105,10 +106,19 @@ The remainder of this documentation shows commands for running tests without
|
||||||
``tox`` by prefixing the argument list with ``--``, as above.
|
``tox`` by prefixing the argument list with ``--``, as above.
|
||||||
|
|
||||||
Tox also respects the ``DJANGO_SETTINGS_MODULE`` environment variable, if set.
|
Tox also respects the ``DJANGO_SETTINGS_MODULE`` environment variable, if set.
|
||||||
For example, the following is equivalent to the command above::
|
For example, the following is equivalent to the command above:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
$ DJANGO_SETTINGS_MODULE=my_postgres_settings tox -e py35-postgres
|
$ DJANGO_SETTINGS_MODULE=my_postgres_settings tox -e py35-postgres
|
||||||
|
|
||||||
|
Windows users should use:
|
||||||
|
|
||||||
|
.. code-block:: doscon
|
||||||
|
|
||||||
|
...\> set DJANGO_SETTINGS_MODULE=my_postgres_settings
|
||||||
|
...\> tox -e py35-postgres
|
||||||
|
|
||||||
Running the JavaScript tests
|
Running the JavaScript tests
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
@ -116,7 +126,9 @@ Django includes a set of :ref:`JavaScript unit tests <javascript-tests>` for
|
||||||
functions in certain contrib apps. The JavaScript tests aren't run by default
|
functions in certain contrib apps. The JavaScript tests aren't run by default
|
||||||
using ``tox`` because they require `Node.js` to be installed and aren't
|
using ``tox`` because they require `Node.js` to be installed and aren't
|
||||||
necessary for the majority of patches. To run the JavaScript tests using
|
necessary for the majority of patches. To run the JavaScript tests using
|
||||||
``tox``::
|
``tox``:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ tox -e javascript
|
$ tox -e javascript
|
||||||
|
|
||||||
|
@ -178,7 +190,9 @@ tests by appending the names of the test modules to ``runtests.py`` on the
|
||||||
command line.
|
command line.
|
||||||
|
|
||||||
For example, if you'd like to run tests only for generic relations and
|
For example, if you'd like to run tests only for generic relations and
|
||||||
internationalization, type::
|
internationalization, type:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ ./runtests.py --settings=path.to.settings generic_relations i18n
|
$ ./runtests.py --settings=path.to.settings generic_relations i18n
|
||||||
|
|
||||||
|
@ -187,11 +201,15 @@ directory name there is the name of a test.
|
||||||
|
|
||||||
If you just want to run a particular class of tests, you can specify a list of
|
If you just want to run a particular class of tests, you can specify a list of
|
||||||
paths to individual test classes. For example, to run the ``TranslationTests``
|
paths to individual test classes. For example, to run the ``TranslationTests``
|
||||||
of the ``i18n`` module, type::
|
of the ``i18n`` module, type:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ ./runtests.py --settings=path.to.settings i18n.tests.TranslationTests
|
$ ./runtests.py --settings=path.to.settings i18n.tests.TranslationTests
|
||||||
|
|
||||||
Going beyond that, you can specify an individual test method like this::
|
Going beyond that, you can specify an individual test method like this:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ ./runtests.py --settings=path.to.settings i18n.tests.TranslationTests.test_lazy_objects
|
$ ./runtests.py --settings=path.to.settings i18n.tests.TranslationTests.test_lazy_objects
|
||||||
|
|
||||||
|
@ -201,7 +219,9 @@ Running the Selenium tests
|
||||||
Some tests require Selenium and a Web browser. To run these tests, you must
|
Some tests require Selenium and a Web browser. To run these tests, you must
|
||||||
install the selenium_ package and run the tests with the
|
install the selenium_ package and run the tests with the
|
||||||
``--selenium=<BROWSERS>`` option. For example, if you have Firefox and Google
|
``--selenium=<BROWSERS>`` option. For example, if you have Firefox and Google
|
||||||
Chrome installed::
|
Chrome installed:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ ./runtests.py --selenium=firefox,chrome
|
$ ./runtests.py --selenium=firefox,chrome
|
||||||
|
|
||||||
|
@ -238,7 +258,9 @@ dependencies:
|
||||||
|
|
||||||
You can find these dependencies in `pip requirements files`_ inside the
|
You can find these dependencies in `pip requirements files`_ inside the
|
||||||
``tests/requirements`` directory of the Django source tree and install them
|
``tests/requirements`` directory of the Django source tree and install them
|
||||||
like so::
|
like so:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ python -m pip install -r tests/requirements/py3.txt
|
$ python -m pip install -r tests/requirements/py3.txt
|
||||||
|
|
||||||
|
@ -288,11 +310,15 @@ that need additional tests. The coverage tool installation and use is described
|
||||||
in :ref:`testing code coverage<topics-testing-code-coverage>`.
|
in :ref:`testing code coverage<topics-testing-code-coverage>`.
|
||||||
|
|
||||||
Coverage should be run in a single process to obtain accurate statistics. To
|
Coverage should be run in a single process to obtain accurate statistics. To
|
||||||
run coverage on the Django test suite using the standard test settings::
|
run coverage on the Django test suite using the standard test settings:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ coverage run ./runtests.py --settings=test_sqlite --parallel=1
|
$ coverage run ./runtests.py --settings=test_sqlite --parallel=1
|
||||||
|
|
||||||
After running coverage, generate the html report by running::
|
After running coverage, generate the html report by running:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ coverage html
|
$ coverage html
|
||||||
|
|
||||||
|
@ -321,12 +347,16 @@ Many test failures with ``UnicodeEncodeError``
|
||||||
If the ``locales`` package is not installed, some tests will fail with a
|
If the ``locales`` package is not installed, some tests will fail with a
|
||||||
``UnicodeEncodeError``.
|
``UnicodeEncodeError``.
|
||||||
|
|
||||||
You can resolve this on Debian-based systems, for example, by running::
|
You can resolve this on Debian-based systems, for example, by running:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
$ apt-get install locales
|
$ apt-get install locales
|
||||||
$ dpkg-reconfigure locales
|
$ dpkg-reconfigure locales
|
||||||
|
|
||||||
You can resolve this for macOS systems by configuring your shell's locale::
|
You can resolve this for macOS systems by configuring your shell's locale:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
$ export LANG="en_US.UTF-8"
|
$ export LANG="en_US.UTF-8"
|
||||||
$ export LC_ALL="en_US.UTF-8"
|
$ export LC_ALL="en_US.UTF-8"
|
||||||
|
@ -347,7 +377,9 @@ it possible to identify a small number of tests that may be related to the
|
||||||
failure.
|
failure.
|
||||||
|
|
||||||
For example, suppose that the failing test that works on its own is
|
For example, suppose that the failing test that works on its own is
|
||||||
``ModelTest.test_eq``, then using::
|
``ModelTest.test_eq``, then using:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ ./runtests.py --bisect basic.tests.ModelTest.test_eq
|
$ ./runtests.py --bisect basic.tests.ModelTest.test_eq
|
||||||
|
|
||||||
|
@ -361,7 +393,9 @@ failing tests is minimized.
|
||||||
|
|
||||||
The ``--pair`` option runs the given test alongside every other test from the
|
The ``--pair`` option runs the given test alongside every other test from the
|
||||||
suite, letting you check if another test has side-effects that cause the
|
suite, letting you check if another test has side-effects that cause the
|
||||||
failure. So::
|
failure. So:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ ./runtests.py --pair basic.tests.ModelTest.test_eq
|
$ ./runtests.py --pair basic.tests.ModelTest.test_eq
|
||||||
|
|
||||||
|
@ -370,13 +404,17 @@ will pair ``test_eq`` with every test label.
|
||||||
With both ``--bisect`` and ``--pair``, if you already suspect which cases
|
With both ``--bisect`` and ``--pair``, if you already suspect which cases
|
||||||
might be responsible for the failure, you may limit tests to be cross-analyzed
|
might be responsible for the failure, you may limit tests to be cross-analyzed
|
||||||
by :ref:`specifying further test labels <runtests-specifying-labels>` after
|
by :ref:`specifying further test labels <runtests-specifying-labels>` after
|
||||||
the first one::
|
the first one:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ ./runtests.py --pair basic.tests.ModelTest.test_eq queries transactions
|
$ ./runtests.py --pair basic.tests.ModelTest.test_eq queries transactions
|
||||||
|
|
||||||
You can also try running any set of tests in reverse using the ``--reverse``
|
You can also try running any set of tests in reverse using the ``--reverse``
|
||||||
option in order to verify that executing tests in a different order does not
|
option in order to verify that executing tests in a different order does not
|
||||||
cause any trouble::
|
cause any trouble:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ ./runtests.py basic --reverse
|
$ ./runtests.py basic --reverse
|
||||||
|
|
||||||
|
@ -385,7 +423,9 @@ Seeing the SQL queries run during a test
|
||||||
|
|
||||||
If you wish to examine the SQL being run in failing tests, you can turn on
|
If you wish to examine the SQL being run in failing tests, you can turn on
|
||||||
:ref:`SQL logging <django-db-logger>` using the ``--debug-sql`` option. If you
|
:ref:`SQL logging <django-db-logger>` using the ``--debug-sql`` option. If you
|
||||||
combine this with ``--verbosity=2``, all SQL queries will be output::
|
combine this with ``--verbosity=2``, all SQL queries will be output:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ ./runtests.py basic --debug-sql
|
$ ./runtests.py basic --debug-sql
|
||||||
|
|
||||||
|
@ -394,7 +434,9 @@ Seeing the full traceback of a test failure
|
||||||
|
|
||||||
By default tests are run in parallel with one process per core. When the tests
|
By default tests are run in parallel with one process per core. When the tests
|
||||||
are run in parallel, however, you'll only see a truncated traceback for any
|
are run in parallel, however, you'll only see a truncated traceback for any
|
||||||
test failures. You can adjust this behavior with the ``--parallel`` option::
|
test failures. You can adjust this behavior with the ``--parallel`` option:
|
||||||
|
|
||||||
|
.. console::
|
||||||
|
|
||||||
$ ./runtests.py basic --parallel=1
|
$ ./runtests.py basic --parallel=1
|
||||||
|
|
||||||
|
|
|
@ -150,6 +150,10 @@ If the ``source`` command is not available, you can try using a dot instead:
|
||||||
|
|
||||||
$ . ~/.virtualenvs/djangodev/bin/activate
|
$ . ~/.virtualenvs/djangodev/bin/activate
|
||||||
|
|
||||||
|
You have to activate the virtual environment whenever you open a new
|
||||||
|
terminal window. virtualenvwrapper__ is a useful tool for making this
|
||||||
|
more convenient.
|
||||||
|
|
||||||
.. admonition:: For Windows users
|
.. admonition:: For Windows users
|
||||||
|
|
||||||
To activate your virtual environment on Windows, run:
|
To activate your virtual environment on Windows, run:
|
||||||
|
@ -158,9 +162,12 @@ If the ``source`` command is not available, you can try using a dot instead:
|
||||||
|
|
||||||
...\> %HOMEPATH%\.virtualenvs\djangodev\Scripts\activate.bat
|
...\> %HOMEPATH%\.virtualenvs\djangodev\Scripts\activate.bat
|
||||||
|
|
||||||
You have to activate the virtual environment whenever you open a new
|
or you can install :ref:`a Windows version of virtualenvwrapper
|
||||||
terminal window. virtualenvwrapper__ is a useful tool for making this
|
<virtualenvwrapper-win>` and then use:
|
||||||
more convenient.
|
|
||||||
|
.. code-block:: doscon
|
||||||
|
|
||||||
|
...\> workon djangodev
|
||||||
|
|
||||||
__ https://virtualenvwrapper.readthedocs.io/en/latest/
|
__ https://virtualenvwrapper.readthedocs.io/en/latest/
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue