Search code examples
pythonpowershellpytestpipenv

How do you run pytest or flask8 from powershell?


I am trying to run a pipeline on python project. I am not able to run the pytest task nor the flask8.

I have the following scripts:

  - python -V
  - $env:Path += ";C:\Users\myuser\AppData\Roaming\Python\Python37\Scripts"
  - pipenv shell
  - pipenv install --dev
  - pipenv graph
  - pipenv shell

giving the following output:

 $ python -V
 Python 3.7.6
 $ pipenv shell
 Launching subshell in virtual environment
 Windows PowerShell 
 Copyright (C) 2016 Microsoft Corporation. All rights reserved.
 PS C:\project> $ pipenv install --dev
 Installing dependencies from Pipfile.lock (aac0cc)
 To activate this projects virtualenv, run pipenv shell.
 Alternatively, run a command inside the virtualenv with pipenv run.
 $ pipenv graph
 ----
 pytest==4.6.9
 ----
 - setuptools [required: Any, installed: 46.1.3]
 $ pipenv shell
 Launching subshell in virtual environment
 Windows PowerShell 
 Copyright (C) 2016 Microsoft Corporation. All rights reserved.
 $ set PYTHONPATH=./src:./
 $ py.test
 py.test : The term 'py.test' is not recognized as the name of a cmdlet, function, script file, or 
 operable program. Check the spelling of the name, or if a path was included, verify that the path 
 is correct and try again.
 At C:\Users\myuser\AppData\Local\Temp\build_script515891919\script.ps1:221 char:1
 + py.test
 + ~~~~~~~
     + CategoryInfo          : ObjectNotFound: (py.test:String) [], CommandNotFoundException
     + FullyQualifiedErrorId : CommandNotFoundException

Uploading artifacts for failed job
00:00
 ERROR: Job failed: exit status 1

Why can't I run the py.test? I have tried the following command as well python -m py.test


Solution

  • Use

    $ pipenv run pytest ...
    

    when you are not in an interactive shell (e.g. when invoking pytest on a CI server). This will run the command in pipenv's virtual environment. The same applies to poetry:

    $ poetry run pytest ...
    

    invokes pytest in the virtual environment managed by poetry.