Databricks にて pytest によるテスト対象のディレクトリにノートブックが含まれる場合のエラーについて

## 概要

Databricks にて pytest 実行時にテスト対象のディレクトリにノートブックが含まれている場合には、次のようなエラーが発生するようです。そのエラーに対しては、ノートブックを削除して、python ファイルを新規で作成してテストコードを保持させることでエラーが解消されます。エラーの再現方法と対応方法を共有します。

> ============================= test session starts ==============================
> platform linux -- Python 3.10.12, pytest-8.1.1, pluggy-1.4.0 -- /local_disk0/.ephemeral_nfs/envs/pythonEnv-4ec1a9d6-6be6-4f9a-9eba-0f2b70be94c9/bin/python
> cachedir: .pytest_cache
> rootdir: /Workspace/Repos/Shared/databricks_tecks_fro_qiita_2
> collecting ... collected 0 items / 1 error
>
> ==================================== ERRORS ====================================
>  ERROR collecting pytest_test/tests/test_cases/test_cases__utilities.py ____

> E   OSError: [Errno 95] Operation not supported: '/Workspace/Repos/Shared/databricks_tecks_fro_qiita_2/pytest_test/tests/test_cases/test_cases__utilities.py'
>         buffering  = -1
>         encoding   = None
>         errors     = None
>         mode       = 'rb'
>         newline    = None
>         self       = PosixPath('/Workspace/Repos/Shared/databricks_tecks_fro_qiita_2/pytest_test/tests/test_cases/test_cases__utilities.py')
> !!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!
> =============================== 1 error in 1.98s ===============================
> 

指定したディレクトリを確認するとファイルらしきものがあり気づくことが困難ではありますが、テストケースのファイルのロゴがノートブックとなっていることで気づくことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/5c14520d-3031-1bf4-8b2d-1dc554e87b02.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/e754ef06-ea61-a53e-272b-e9ab93dca9e7.png)


Databricks 上で pytest によりテストを実行する方法については次の記事で紹介しています。

- [Databricks Workspace 上で pytest によるテストケース作成とテスト実行を行う方法 #Python - Qiita](https://qiita.com/manabian/items/c31a6498b2db1b78ac1b)

## エラーの再現方法

### Databricks Repos 上に次の URL から Repo を作成します。

- https://github.com/manabian-/databricks_tecks_fro_qiita_2.git

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/616e3169-d98e-7557-357c-cc0e4127dacc.png)

### `pytest_test/tests/test_cases/test_cases__utilities.py`パスにあるファイルを削除します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/cfb8ad87-796b-e764-25db-104957d7cb53.png)

### `pytest_test/tests/test_cases/test_cases__utilities.py`ディレクトリに`test_cases__utilities.py`という名称のノートブックを作成して次のコードを貼り付け

```python
import pytest
from pytest_test.src.utilities import add_num

def test__add_num__001():
    """successes（正常系テスト）"""
    assert add_num(1, 1) == 2

def test__add_num__002():
    """successes（異常系テスト）"""
    # 文字を引数とすることでエラーとなる想定
    with pytest.raises(TypeError) as e:
        add_num(1, 'ABC')

```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/c667f6ba-a78c-909a-a277-299488577ec8.png)

### テストを実行するとエラー終了となることを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/c2f58b4b-3b57-0835-8b6e-82b491a2ae81.png)

## 対応方法

### ノートブックを削除

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/6136421a-549f-990b-f5f1-97e7bfec2f43.png)

###  `pytest_test/tests/test_cases/test_cases__utilities.py`ディレクトリに`test_cases__utilities.py`という名称のファイを作成して次のコードを貼り付け


```python
import pytest
from pytest_test.src.utilities import add_num

def test__add_num__001():
    """successes（正常系テスト）"""
    assert add_num(1, 1) == 2

def test__add_num__002():
    """successes（異常系テスト）"""
    # 文字を引数とすることでエラーとなる想定
    with pytest.raises(TypeError) as e:
        add_num(1, 'ABC')

```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/a79ece39-6b9b-db40-f617-ca075e9ee205.png)

### テストを実行し正常終了することを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/928cc1b6-cad2-40f6-0c94-3b5368886b82.png)