---
author: deng
date: "20250109"
category: Note
tags:
  - Python
  - Nox
  - FlexibleTest
  - Versioning
---

![cover](resources/nox.png)
[image resource](https://nox.thea.codes/en/stable/index.html)

- Abstract
	- 在將Python專案打包時會遇到填寫依賴套件及其版本的問題，開發者必須逐一測試Python版本與依賴套件版本之間（甚至是跨平台）不同組合的可運行性，而Nox正是為了可以將此流程自動化而生
- Steps
	1. 在虛擬環境中安裝Nox（`pip install nox`）
	2. 在Package資料夾中產生*noxfile.py* 並撰寫測試程式碼（範例程式碼可見Note）
	3. 於終端機輸入`nox` 開始進行測試
- Note
	- 以下為*noxfile.py*範例程式碼（透過環境是否能順利通過單元測試來判別套件之間的匹配性）

```python
# noxfile.py
#
# author: deng
# date : 20250110

import nox  


@nox.session(python=['3.10', '3.11', '3.12'])
@nox.parametrize('numpy', ['1.26', '2.0'])
@nox.parametrize('scikit_learn', ['1.5', '1.6'])
def test_flexibility(session, numpy, scikit_learn):

    # Install package dependencies
    session.install(f'numpy=={numpy}')
    session.install(f'scikit-learn=={scikit_learn}')

    # Test
    session.install('pytest')
    session.run('pytest')
```