Conținut curs
Python Avansat
Despre lecție

Obiective

În această lecție, veți învăța:

  1. Introducere în testarea avansată
  2. Utilizarea bibliotecii tox pentru a automatiza testarea în Python
  3. Configurarea GitHub Actions pentru integrare continuă
  4. Exemplu de proiect care utilizează tox și GitHub Actions pentru testare

1. Introducere în testarea avansată

Testarea avansată implică utilizarea unor tehnici și instrumente mai sofisticate pentru a asigura calitatea software-ului. Acest lucru poate include testarea în diferite medii, utilizarea de integrare continuă și testarea performanței.

Un aspect important al testării avansate este capacitatea de a rula teste pe mai multe versiuni de Python și în diferite medii. Biblioteca tox este un instrument popular pentru acest scop.

2. Utilizarea bibliotecii tox pentru a automatiza testarea în Python

tox este o bibliotecă Python care automatizează și standardizează testarea în mai multe medii virtuale. Acesta vă permite să testați codul în diferite versiuni de Python și sisteme de operare, asigurându-vă că aplicația dvs. funcționează corect într-o varietate de condiții.

2.1. Instalarea și configurarea tox

Pentru a începe să utilizați tox, instalați-l cu pip:

pip install tox

Apoi, creați un fișier de configurare numit tox.ini în directorul rădăcină al proiectului dvs. Acest fișier va conține setările pentru tox. Un exemplu de configurație de bază arată astfel:

ini
[tox]
envlist = py37, py38, py39

[testenv]
deps = pytest
commands = pytest

Această configurație va rula testele pe Python 3.7, 3.8 și 3.9 folosind biblioteca pytest.

2.2. Rularea testelor cu tox

Pentru a rula testele cu tox, pur și simplu executați tox în linia de comandă:

tox

tox va crea medii virtuale separate pentru fiecare versiune de Python specificată în tox.ini, va instala dependențele necesare și va rula testele.

3. Configurarea GitHub Actions pentru integrare continuă

Integrarea continuă (CI) este o practică în care modificările de cod sunt automat testate și integrate într-un proiect. GitHub Actions este un serviciu CI/CD oferit de GitHub care permite automatizarea și personalizarea fluxurilor de lucru în proiectele dvs.

3.1. Crearea unui flux de lucru CI

Pentru a crea un flux de lucru CI cu GitHub Actions, creați un fișier .github/workflows/ci.yml în directorul rădăcină al proiectului dvs. Un exemplu de configurație de bază arată astfel:

yaml
name: CI

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [3.7, 3.8, 3.9]

    steps:
    - name: Checkout repository
      uses: actions/checkout@v2

    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install tox

    - name: Run tests
      run: tox -e py

Această configurație va declanșa un flux de lucru CI de fiecare dată când se efectuează un push sau un pull request în repository. Fluxul de lucru va rula testele pe Python 3.7, 3.8 și 3.9 folosind tox.

4. Exemplu de proiect care utilizează tox și GitHub Actions pentru testare

Să presupunem că avem un proiect Python simplu cu următoarea structură:

my_project/
├── my_module/
│   ├── __init__.py
│   └── utils.py
├── tests/
│   ├── __init__.py
│   └── test_utils.py
├── .github/
│   └── workflows/
│       └── ci.yml
├── .gitignore
├── README.md
└── tox.ini

my_module conține o funcție numită add în fișierul utils.py:

python
def add(a, b):
    return a + b

tests conține un test pentru funcția add în fișierul test_utils.py:

python
import pytest
from my_module.utils import add

def test_add():
    assert add(1, 2) == 3

tox.ini este configurat pentru a rula testele pe Python 3.7, 3.8 și 3.9:

ini
[tox]
envlist = py37, py38, py39

[testenv]
deps = pytest
commands = pytest

.github/workflows/ci.yml este configurat pentru a rula testele cu GitHub Actions:

yaml
name: CI

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [3.7, 3.8, 3.9]

    steps:
    - name: Checkout repository
      uses: actions/checkout@v2

    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install tox

    - name: Run tests
      run: tox -e py

Acum, când faceți modificări în repository și creați un push sau un pull request, GitHub Actions va rula automat testele în mai multe versiuni de Python folosind tox.

Concluzie

În această lecție, am discutat despre testarea avansată și integrarea continuă în Python. Am învățat cum să utilizăm biblioteca tox pentru a automatiza testarea în mai multe medii și cum să configurăm GitHub Actions pentru a rula testele în mod automat la fiecare push sau pull request.

Aceste tehnici ne ajută să ne asigurăm că aplicațiile noastre funcționează corect și eficient într-o varietate de condiții și ne permit să identificăm și să remediem rapid erorile și problemele de performanță.