Menguji paket Anda di berbagai lingkungan

Mengembangkan Paket Python

James Fulton

Climate informatics researcher

Menguji banyak versi Python

setup.py ini mengizinkan Python versi 2.7 ke atas.

from setuptools import setup, find_packages

setup(
    ...
    python_requires='>=2.7',
)

Untuk menguji versi Python ini Anda harus:

  • Memasang semua versi Python tersebut
  • Memasang paket Anda dan semua dependensi di tiap Python
  • Menjalankan pytest
Mengembangkan Paket Python

Menguji banyak versi Python

setup.py ini mengizinkan Python versi 2.7 ke atas.

from setuptools import setup, find_packages

setup(
    ...
    python_requires='>=2.7',
)

Untuk menguji versi Python ini Anda harus:

  • Memasang semua versi Python tersebut
  • Menjalankan tox
Mengembangkan Paket Python

Apa itu tox?

  • Dirancang untuk menjalankan tes di banyak versi Python
Mengembangkan Paket Python

Konfigurasikan tox

Berkas konfigurasi - tox.ini

mysklearn/
|-- mysklearn
|   |-- ...
|-- tests
|   |-- ...
|-- setup.py
|-- LICENSE
|-- MANIFEST.in
|-- tox.ini   <--- berkas konfigurasi
Mengembangkan Paket Python

Konfigurasikan tox

Berkas konfigurasi - tox.ini

[tox]

envlist = py27, py35, py36, py37
[testenv]
deps = pytest
commands = pytest
echo "run more commands" ...
  • Judul diapit tanda kurung siku [...].
  • Untuk menguji Python versi X.Y tambahkan pyXY ke envlist.
  • Versi Python yang diuji harus sudah terpasang.
  • Parameter commands memuat perintah terminal yang akan dijalankan tox.
  • Daftar commands bisa berisi perintah terminal apa pun, seperti ls, cd, echo, dll.
Mengembangkan Paket Python

Menjalankan tox

tox
mysklearn/    <-- masuk ke sini
|-- mysklearn
|   |-- ...
|-- tests
|   |-- ...
|-- setup.py
|-- LICENSE
|-- MANIFEST.in
|-- tox.ini
Mengembangkan Paket Python

Keluaran tox

py27 create: /mypackages/mysklearn/.tox/py27
py27 installdeps: pytest
py27 inst: /mypackages/mysklearn/.tox/.tmp/package/1/mysklearn-0.1.0.zip
py27 installed: mysklearn==0.1.0,numpy==1.16.6,pandas==0.24.2,pytest==4.6.11,...
py27 run-test-pre: PYTHONHASHSEED='2837498672'
...
Mengembangkan Paket Python

Keluaran tox

py27 run-test: commands[0] | pytest
======================== test session starts ========================
platform linux2 -- Python 2.7.17, ...
rootdir: /home/workspace/mypackages/mysklearn
collected 6 items                         

tests/preprocessing/test_normalize.py ...                     [ 50%]
tests/preprocessing/test_standardize.py ...                   [100%]

========================= 6 passed in 0.23s =========================
Mengembangkan Paket Python

Keluaran tox

...
__________________________ summary __________________________
  py27: commands succeeded
  py35: commands succeeded
  py36: commands succeeded
  py37: commands succeeded
Mengembangkan Paket Python

Keluaran tox

...
__________________________ summary __________________________
  py27: commands succeeded
  py35: commands succeeded
  py36: commands succeeded
ERROR:   py37: commands failed
Mengembangkan Paket Python

Ayo berlatih!

Mengembangkan Paket Python

Preparing Video For Download...