52175
# 環境

  * python 3.6.6
  * pytest 4.0.0

# 背景

Pythonの自作ライブラリをpytestでテストしたいです。  
自作ライブラリはpip installできるようになっています。  
`pip install git+https://github.com/sample/sampleapi`

### フォルダ構成

```

    project/
    │  pytest.ini
    │  setup.py
    │  
    ├─sampleapi/
    │  │  api.py
    │  │  
    │          
    │      
    └─tests/
        │  test.py
        │  
    
```

### setup.py

```

    from setuptools import setup, find_packages
    
    setup(name='sampleapi',
    ...)
    
```

# 問題

私の環境では自作ライブラリがインストールされています。  
この状態で`pytest tests`を実行すると、`pip install`した方のsampleapiが参照されます。  
したがって、テストの実行結果を元にsampleapiを修正した場合、再度pip installする必要があります。

自作ライブラリがインストールされている状態で、ローカルのファイルを参照してpytestを実行するには、どうしたらよいでしょうか？  
自作ライブラリがインストールされていなければ、ローカルのファイルが参照されました。

###
CC BY-SA 4.0
2019-01-13T07:57:36.047
51941
2019-01-21T12:34:06.053
2020-06-17T08:14:45.997
-1
19524
question
python テスト
自作ライブラリがインストールされている状態(pip install)で、ローカルのファイルを参照してpytestを実行する方法
2つの方法があります。

  1. `PYTHONPATH` を設定する
  2. `tox` を使ってテスト環境を分離する

1は、以下のようにコマンドラインで実行します。

```

    $ PYTHONPATH=. pytest tests
    
```

このように毎回書きたくない場合のために、 <https://pypi.org/project/pytest-pythonpath/>
というプラグインが提供されているので、これを使うのもよいでしょう。

2は、 <https://pypi.org/project/tox/>
を使うことでテスト環境をvirtualenv内に分離する方法です。virtualenvやvenvを手動でテスト用に作成するのでもよいですが、toxを使うのが一般的です。
CC BY-SA 4.0
2019-01-21T12:34:06.053
52175
2019-01-21T12:34:06.053
806
51941
answer