how to make a Python Test Driven Development environment automatically on Windows without Windows Subsystem for Linux
To review, here are steps I take to make the environment for every project
I give the project a name
I make a Python file to hold the source code in the ‘src’ folder
I make a Python file to hold the tests in the ‘tests’ folder
I make the test pass
then I start working on the project
I want to give one command for the program to do every step except
give the project a name
make the test pass and
work on the project
I only want to do 3 steps not 18
preview
Here is the program_ I have by the end of the chapter to automatically make a python test driven development environment, it is only 27 lines of code, with spaces
1mkdir more_magic
2cd more_magic
3mkdir src
4New-Item "src/more_magic.py"
5mkdir tests
6New-Item tests/__init__.py
7
8"import unittest
9
10
11class TestMoreMagic(unittest.TestCase):
12
13 def test_failure(self):
14 self.assertFalse(True)
15
16
17# Exceptions seen
18# AssertionError
19" | Out-File "tests/test_more_magic.py" -Encoding UTF8
20
21python -m venv .venv
22.venv/scripts/activate.ps1
23python -m pip install --upgrade pip
24"pytest-watch" | Out-File requirements.txt -Encoding UTF8
25python -m pip install --requirement requirements.txt
26pytest-watch
questions about making a Python Test Driven Development Environment automatically on Windows without Windows Subsystem for Linux
Here are questions you can answer after going through this chapter
how to make a PowerShell script
I go to the terminal_ and use `New-Item`_ to make an empty file_ with a name that is easy to remember later. I want the name to also describe the program_ that will automatically make a Test Driven Development environment for me
New-Item makePythonTdd.ps1the terminal_ goes back to the command line
I open
makePythonTdd.ps1in the editor of the `Integrated Development Environment (IDE)`_, then add the commands I use to make a Python_ Test Driven Development environment for a project1mkdir magic_again 2cd magic_again 3mkdir src 4New-Item src/magic_again.py 5mkdir tests 6New-Item tests/__init__.py 7New-Item tests/test_magic_again.py 8python -m venv .venv 9.venv/scripts/activate.ps1 10python -m pip install --upgrade pip 11"pytest-watch" | Out-File requirements.txt -Encoding UTF8 12python -m pip install --requirement requirements.txt 13pytest-watchtest_magic_again.pyis an empty file_ becuase I used `New-Item`_. I want it to have the text for the first failure so I do not have to open the editor to add the text for it in each project. I use `Out-File`_ to add the text totest_magic_again.pywhen it makes the file_ in thetestsfolder_, the same I do with therequirements.txtfile_5mkdir tests 6New-Item tests/__init__.py 7 8"" | Out-File "tests/test_magic.py" -Encoding UTF8 9 10python -m venv .venv 11.venv/scripts/activate.ps1I add the text for the test inside the quotes (“”) I just added to
makePythonTdd.sh, the way I do with `Out-File`_ when I add"pytest-watch"as text inrequirements.txtCaution
Indentation_ is important in Python_, I use 4 spaces as convention in this book, see the Python Style Guide for more
8"import unittest 9 10 11class TestMagicAgain(unittest.TestCase): 12 13 def test_failure(self): 14 self.assertFalse(True) 15 16 17# Exceptions seen 18# AssertionError 19" | Out-File "tests/test_magic_again.py" -Encoding UTF8
how to run a PowerShell script
I go back to the terminal_ to run the program_
makePythonTdd.ps1the terminal_ shows
command not found: makePythonTdd.ps1I have to tell the computer where the file_ is
.\makePythonTdd.ps1.\is shorthand forthis directorywhich in this case ispumping_pythonwheremakePythonTdd.ps1is saved. The terminal_ shows======================================= FAILURES ======================================= _____________________________ TestMagicAgain.test_failure _____________________________ self = <tests.test_magic_again.TestMagicAgain testMethod=test_failure> def test_failure(self): > self.assertFalse(True) E AssertionError: True is not false tests/test_magic_again.py:7: AssertionError =============================== short test summary info ================================ FAILED tests/test_magic_again.py::TestMagicAgain::test_failure - AssertionError: True is not false ================================== 1 failed in X.YZs ===================================Success! I just made a program_ that can make the
magic_againproject anytime I want and it automatically does the steps I did manually.I hold ctrl on the keyboard and click on
tests/test_magic_again.pyto open it in the editor then make the test passI hit ctrl+c in the terminal_ to stop the test
I deactivate the `virtual environment`_
deactivatethe terminal_ goes back to the command line
I leave the
magicfolder to go back to thepumping_pythonfolder_cd ..the terminal_ shows
...\pumping_python >I want to use
makePythonTdd.ps1to make another project with a different name. I changemagic_againto the name of the new project in the editorNote
The lines that are changing in the code are highlighted
1mkdir more_magic 2cd more_magic 3mkdir src 4touch src/more_magic.py 5mkdir tests 6touch tests/__init__.py 7 8"import unittest 9 10 11class TestMoreMagic(unittest.TestCase): 12 13 def test_failure(self): 14 self.assertFalse(True) 15 16 17# Exceptions seen 18# AssertionError 19" | Out-File "tests/test_more_magic.py" - Encoding UTF8I run
makePythonTdd.ps1in the terminal_ to make a project namedmore_magic./makePythonTdd.ps1the terminal_ shows AssertionError
======================================= FAILURES ======================================= _____________________________ TestMoreMagic.test_failure ______________________________ self = <tests.test_more_magic.TestMoreMagic testMethod=test_failure> def test_failure(self): > self.assertFalse(True) E AssertionError: True is not false tests/test_more_magic.py:7: AssertionError =============================== short test summary info ================================ FAILED tests/test_more_magic.py::TestMoreMagic::test_failure - AssertionError: True is not false ================================== 1 failed in X.YZs ===================================I make the test pass
I hit ctrl+c to exit the tests in the terminal_
the program_ works and can make a Python_ Test Driven Development environment automatically the way I want every time
close the project
I close the
test_more_magic.pyin the editor I had openI click in the terminal_ and exit the tests with ctrl+c on the keyboard
I deactivate the `virtual environment`_
deactivatethe terminal_ goes back to the command line,
(.venv)is no longer on the left side...\pumping_python\more_magicI `change directory`_ to the parent of
more_magiccd ..the terminal_ shows
...\pumping_pythonI am back in the
pumping_pythondirectory_
review
`Computer Programming`_ allows me to take some steps and make them a one line command for the computer to do for me. You have seen a way I can make a Python_ Test Driven Development environment, with a program to do it on any Windows_ computer without `Windows Subsystem for Linux`_.
How many questions can you answer after going through this chapter?
what is next?
Here is what we have gone through together so far
rate pumping python
If this has been a 7 star experience for you, please leave a 5 star review. It helps other people get into the book too