Kiểm thử gói của bạn trên nhiều môi trường

Phát triển gói Python

James Fulton

Climate informatics researcher

Kiểm thử nhiều phiên bản Python

setup.py này cho phép mọi phiên bản Python từ 2.7 trở lên.

from setuptools import setup, find_packages

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

Để kiểm thử các phiên bản này, bạn phải:

  • Cài tất cả các phiên bản Python đó
  • Cài gói của bạn và mọi phụ thuộc vào từng Python
  • Chạy pytest
Phát triển gói Python

Kiểm thử nhiều phiên bản Python

setup.py này cho phép mọi phiên bản Python từ 2.7 trở lên.

from setuptools import setup, find_packages

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

Để kiểm thử các phiên bản này, bạn phải:

  • Cài tất cả các phiên bản Python đó
  • Chạy tox
Phát triển gói Python

tox là gì?

  • Dùng để chạy kiểm thử với nhiều phiên bản Python
Phát triển gói Python

Cấu hình tox

Tệp cấu hình - tox.ini

mysklearn/
|-- mysklearn
|   |-- ...
|-- tests
|   |-- ...
|-- setup.py
|-- LICENSE
|-- MANIFEST.in
|-- tox.ini   <--- tệp cấu hình
Phát triển gói Python

Cấu hình tox

Tệp cấu hình - tox.ini

[tox]

envlist = py27, py35, py36, py37
[testenv]
deps = pytest
commands = pytest
echo "run more commands" ...
  • Tiêu đề đặt trong ngoặc vuông [...].
  • Để kiểm thử Python phiên bản X.Y, thêm pyXY vào envlist.
  • Các phiên bản Python kiểm thử phải được cài sẵn.
  • Tham số commands liệt kê lệnh terminal tox sẽ chạy.
  • commands có thể là bất kỳ lệnh terminal nào như ls, cd, echo...
Phát triển gói Python

Chạy tox

tox
mysklearn/    <-- di chuyển đến đây
|-- mysklearn
|   |-- ...
|-- tests
|   |-- ...
|-- setup.py
|-- LICENSE
|-- MANIFEST.in
|-- tox.ini
Phát triển gói Python

Đầu ra của 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'
...
Phát triển gói Python

Đầu ra của 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 =========================
Phát triển gói Python

Đầu ra của tox

...
__________________________ summary __________________________
  py27: commands succeeded
  py35: commands succeeded
  py36: commands succeeded
  py37: commands succeeded
Phát triển gói Python

Đầu ra của tox

...
__________________________ summary __________________________
  py27: commands succeeded
  py35: commands succeeded
  py36: commands succeeded
ERROR:   py37: commands failed
Phát triển gói Python

Ayo berlatih!

Phát triển gói Python

Preparing Video For Download...