Мазмунга өтүү

Тереӊ тестирлөө: моктор жана фикстуралар

Сабактын башталышы

Тереӊ тестирлөө: моктор жана фикстуралар

Фикстуралар, параметрлештирүү, моктор жана камтуу: реалдуу дүйнө менен иштешкен кодду кантип тестирлөө керек

Негизги идея: Орто деӊгээлде pytest таза функциялар үстүнөн жөнөкөй assert жазууну үйрөтөт. Реалдуу системалар таза эмес: алар тармакка кайрылат, файлдарды окуйт, маалымат базалары менен иштейт жана сааттан убакытты алат. Мындай кодду тестирлөө үчүн аны дүйнөдөн обочолонтуу керек - тесттик дублёрлор (моктор) менен, кайра колдонула турган абалды фикстуралар менен курат, бир тестти көп киришке параметрлештирүү менен айдайт, анан тесттериӊ чындыгында эмнени козгогонун камтуу менен өлчөйт. Ушул төрт чеберчилик "мен тест жаздым" дегенди "мен каалаган нерсени тестирлей алам" дегенге айландырат.
Аягында сиз буларды жасай аласыз:
  • @pytest.fixture функцияларын жазуу жана аларды параметр аты боюнча киргизүү,
  • фикстуранын туура көрүнүү аймагын тандоо жана yield аркылуу артынан тазалоо,
  • бир тестти көп учурга @pytest.mark.parametrize менен айдоо,
  • реалдуу көз карандылыктарды unittest.mock жана patch() менен алмаштыруу, "ат изделген жерде патчтоо" эрежесин колдонуу,
  • кайтаруучу маанилерди, каптал таасирлерди жана мок үстүндөгү текшерүүлөрдү тууралоо,
  • камтууну өлчөө жана окуу жана эмне үчүн 100% "катасыз" дегенди билдирбешин түшүнүү.

1. Фикстуралар: көз карандылыкты киргизүү катары орнотуу

Фикстура - бул @pytest.fixture декоратору менен функция, ал тестке керектүү объектти жаратат: убактылуу маалымат базасы, тууралган клиент, үлгү жазуу. Тест фикстураны жөн гана атын параметр катары жазып сурайт. pytest атты көрөт, фикстураны аткарат жана анын натыйжасын берет. Бул көз карандылыкты киргизүү: тест эмне керек экенин жарыялайт, а pytest аны берет.

import pytest

@pytest.fixture
def account():
    return {"balance": 100, "owner": "ada"}

def test_withdraw(account):        # pytest фикстураны аты боюнча киргизет
    account["balance"] -= 30
    assert account["balance"] == 70

Эмнени жазбаганыӊызга көӊүл буруӊуз: тесттин башында эч кандай орнотуу чакырыгы да, глобалдык абал да жок. account деп атаган ар бир тест өзүнүн жаӊы курулган сөздүгүн алат, ошондуктан тесттер бири-бирине абалды агызбайт. Фикстуралар башка фикстураларды да сурай алат, ошентип кичине бөлүктөрдөн толук чөйрөнү курууга болот.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө