Pytest тест

Purevdalai Zangad
2 min readMar 22, 2021

--

Pytest нь python дээр суурилсан тест хийх зориулалттай framework юм. Pytest -г ихэвчлэн REST services тест хийхэд ашиглаж байна. Мөн өгөгдлийн сан, UI болон API тест хийж чадна.

Давуу тал:

  • Олон тестийг нэгэн зэрэг ажиллуулах боломжтой.
  • Pytest нь тестийн файл, тестийн функцийг шууд заагаагүй бол автоматаар илрүүлэх өөрийн гэсэн аргатай.
  • Pytest нь гүйцэтгэлийн явцад тестийн дэд хэсгийг алгасах боломжийг бидэнд олгодог.
  • Pytest нь бүх тестийг дэд хэсэгээр ажиллуулах боломжийг бидэнд олгодог.
  • Нээлттэй эхийн
  • Ашиглахад хялбар, энгийн

Pytest суулгах нь

Сүүлийн хувилбар суулгах бол

pip install pytest

Хувилбар заан суулгах бол

pip install pytest == 2.9.1

Амжилттай суусан эсэхийг шалгах бол

pytest -h

Pytest файл нэр өгөх аргачлал

Файлын нэрийг зааж өгөлгүйгээр бүх тестийг ажиллуулах бол та тестийн файлуудаа дараахь форматуудаас аль нэгийг нь мөрдөхөд л хангалттай.

  • test_*.py
  • *__test.py

Ингэж дээрх 2 форматаар нэрлэгдсэн бүх тестийн файлыг илрүүлэн ажиллуулах болно.

Жишээ нь:

  • test_login.py
  • login_test.py гэх байдлаар нэрлэж өгөх хэрэгтэй.

Pytest функцын нэрийг test -р эхэлсэн байхыг заавал шаарддаг бөгөөд test* -р эхлээгүй бол тухайн тестийг тест биш гэж үзэн ажиллуулдаггүй.

Жишээ нь: testLoginUser() гэх байдлаар нэрлэж өгөөрэй.

Тест код бичиж үзэх нь

test_square.py гэсэн нэртэй тест файл үүсгэе. Үүсгэсэн файлруугаа доорх кодыг хуулж бичье

import math

def test_sqrt():
num = 25
assert math.sqrt(num) == 5

def testsquare():
num = 7
assert 7*7 == 40

def tesequality():
assert 10 == 11

Ажиллуулахдаа дараахь коммандыг бичин ажиллуулна.

pytest

Үр дүн

test_square.py .F
============================================== FAILURES
==============================================
______________________________________________ testsquare
_____________________________________________
def testsquare():
num=7
> assert 7*7 == 40
E assert (7 * 7) == 40
test_square.py:9: AssertionError
================================= 1 failed, 1 passed in 0.06 seconds
=================================

Үр дүнгийн эхний мөр дээр файл нэр болон үр дүнг нь харуулж байна. F гэдэг нь алдаа гарсан гэсэн үг бөгөөд харин цэг (.) нь амжилттай тестийг давсанг илтгэнэ.

Дараахь мөрнүүдэд харин алдаа гарсан тестүүдийн дэлгэрэнгүй мэдээлэлийг харуулж байна. Энэхүү жишээны хувьд 7*7 нь 40 -тэй тэнцүү юу гэсэн жишилт дээр алдаа гарсан байна.

Төгсгөлд нь нийт дүгнэлтийн мэдээлэлийг харуулж байна. 1 тест алдаа гарсан 1, тест амжилттай давлаа. Мөн 0,06 сек -нд ажилсан байна.

tesequality нь ажиллаагүй бөгөөд pytest нь зөвхөн test* гэсэн форматаар нэрлэгдсэн функцуудыг тест гэж үзэн ажиллуулдаг.

Ажиллуулсан үр дүнгээ дахин харах бол

pytest -v

Санамж: pytest нь test_* эсвэл *_test гэсэн форматаар нэрлэгдсэн файлуудыг илрүүлэн ажиллуулдаг.

--

--

Purevdalai Zangad
Purevdalai Zangad

Written by Purevdalai Zangad

I am a software engineer. Currently, I am living in Fukushima, Japan. Since 2022, I am working at OMJ TS as a software engineer.

No responses yet