Pytest یک چارچوب تست پایتون است که نوشتن تستهای کوچک و خوانا را آسان میکند و میتواند برای پشتیبانی از تستهای عملکردی پیچیده برای برنامهها و کتابخانهها مقیاس شود. در این آموزش، نحوه ادغام نتایج تست تولید شده توسط تست خودکار Pytest در TestRail را با استفاده از TestRail CLI. این به شما این امکان را می دهد که نتایج تست خودکار خود را متمرکز کنید و از تمام قابلیت های تحلیلی و گزارش دهی TestRail استفاده کنید.
نمای کلی #
در طول این آموزش، ما از یک پروژه نمونه استفاده خواهیم کرد تا شما را در فرآیند راه اندازی یک پروژه تست خودکار Pytest که با TestRail CLI سازگار است و بارگذاری نتایج تست تولید شده را راهنمایی کند.
پس از مطالعه این آموزش، شما قادر خواهید بود:
- تست ها را از پروژه Pytest اجرا کنید
- TestRail CLI را نصب کنید
- نمونه TestRail خود را پیکربندی کنید
- CLI را اجرا کنید
- تستکیسها و نتایج تست خود را در TestRail مشاهده کنید
پیش نیازها #
برای اینکه بتوانید یک پروژه ساده Pytest را نصب و اجرا کنید، تنها چیزی که نیاز دارید پایتون برای شروع است. از آنجایی که TestRail CLI که برای وارد کردن نتایج تست استفاده خواهد شد نیز ابزاری است که با استفاده از پایتون توسعه یافته است، این به ما امکان نصب و اجرای آن را نیز میدهد.
| پیش نیاز | توضیحات |
|---|---|
| پایتون ۳.۱۰.۴ |
نسخه را برای سیستم عامل خود دانلود کنید و دستورالعمل های جادوگر نصب را دنبال کنید. برای اطمینان از موفقیت آمیز بودن نصب، دستورات را اجرا کنید |
نصب نمونه پروژه #
بیایید با واکشی کد پروژه نمونه و نصب وابستگی های مورد نیاز شروع کنیم.
- کلون یا دانلود کنید نمونه پروژه
- خط فرمان خود را در پوشه ریشه پروژه باز کنید و دستور زیر را اجرا کنید
$ pip install -r "requirements.txt"
| مورد نیاز | توضیحات |
|---|---|
| pytest |
Pytest – چارچوب تست عملکردی پایتون |
بررسی پروژه نمونه #
از IDE مورد علاقه خود برای باز کردن پروژه نمونه استفاده کنید و شروع به حفاری در فایل های آزمایشی کنید. ما کد تست های خودکار را ساده نگه داشته ایم تا تمرکز این آموزش بر نحوه وارد کردن نتایج اجرا باقی بماند. این تست ها شامل باز کردن یک صفحه در مرورگر با استفاده از سلنیوم و انجام چند عمل و اعتبارسنجی، مانند نمونه زیر است.
import pytest
def test_sum_two_numbers():
assert 1 + 1 == 2
def test_sum_two_decimals(record_property):
record_property("testrail_attachment", "sample_reports/testrail.jpg")
assert 0.8 + 0.3 == 1.2
@pytest.mark.parametrize("test_input,expected", [("3+5", 8), ("2+4", 6)])
def test_sum_multiple_numbers(test_input, expected):
assert eval(test_input) == expected
پیوست فایل به گزارش #
TestRail CLI به شما این امکان را میدهد که فایلهای پیوست را به همراه نتایج تست خود با استفاده از آن اضافه کنید testrail_tachment ویژگی با مسیر فایلی که می خواهید آپلود کنید. برای افزودن این ویژگی به گزارش JUnit، می توانید از Pytest استفاده کنید record_property روش، با عبور دادن کلید testrail_tachment و مسیر را به عنوان مقدار، شبیه به آنچه در آن می بینید test_sum_two_decimals بر روی قطعه کد بالا تست کنید. توجه داشته باشید که باید تزریق کنید record_property روش بر روی آرگومان های تست در قادر به فراخوانی آن است.
اجرای نمونه پروژه #
در همان خط فرمان، دستور زیر را برای اجرای تست های Pytest در پروژه اجرا کنید و نتایج را در فرمت JUnit XML ذخیره کنید.
$ pytest --junitxml "junit-report.xml" "./tests"
اگر دستور به درستی اجرا شده باشد، باید یک فایل فراخوانی شده باشد junit-report.xml در پوشه گزارش ها، مطابق با گزینه های خط فرمان ما، با نتایج تست در فرمت JUnit XML. این فایلی است که توسط TestRail CLI به منظور ایجاد اجرای تست و آپلود نتایج آزمون شما در TestRail در مرحله بعد تجزیه می شود.
<?xml version="1.0" encoding="utf-8"?>
<testsuites>
<testsuite name="pytest" errors="0" failures="1" skipped="0" tests="5" time="0.063"
timestamp="2022-07-22T11:51:34.060104" hostname="LAPTOP-09USROG2">
<testcase classname="tests.test_subtraction" name="test_subtract_two_numbers" file="tests\test_subtraction.py"
line="0" time="0.001"/>
<testcase classname="tests.test_sum" name="test_sum_two_numbers" file="tests\test_sum.py" line="3"
time="0.000"/>
<testcase classname="tests.test_sum" name="test_sum_two_decimals" file="tests\test_sum.py" line="7"
time="0.000">
<properties>
<property name="testrail_attachment" value="sample_reports/testrail.jpg"/>
</properties>
<failure message="assert (0.8 + 0.3) == 1.2">def test_sum_two_decimals():
> assert 0.8 + 0.3 == 1.2
E assert (0.8 + 0.3) == 1.2
tests\test_sum.py:9: AssertionError
</failure>
</testcase>
<testcase classname="tests.test_sum" name="test_sum_multiple_numbers[3+5-8]" file="tests\test_sum.py" line="11"
time="0.001"/>
<testcase classname="tests.test_sum" name="test_sum_multiple_numbers[2+4-6]" file="tests\test_sum.py" line="11"
time="0.000"/>
</testsuite>
</testsuites>
وارد کردن نتایج به TestRail #
پس از انجام آزمایشات و junit-report.xml فایل ایجاد شده است، شما به راحتی می توانید با استفاده از TestRail CLI، نتایج تست خود (و تستکیسها!) را به TestRail وارد کنید. این امر باعث می شود تا اجرای تست خودکار شما قابل مشاهده باشد و به شما امکان می دهد تا به تصویر بزرگی از نحوه آزمایش برنامه خود در TestRail نگاه کنید.
نصب TestRail CLI #
با توجه به اینکه قبلا پایتون را روی دستگاه خود نصب کرده اید، نصب TestRail CLI به سادگی اجرای دستور زیر در خط فرمان شما است.
$ pip install trcli
پیکربندی TestRail #
در مرحله دوم، شما باید نمونه TestRail خود را طبق دستورالعمل های زیر پیکربندی کنید.
- را فعال کنید TestRail API با رفتن به مدیر > تنظیمات سایت، روی API برگه، و چک کردن فعال کردن API گزینه
- ایجاد یک فیلد سفارشی به منظور نگاشت کد تستکیسها خودکار خود به موارد واقعی TestRail. شما می توانید این کار را با رفتن به مدیر > سفارشی سازی ها و کلیک کردن فیلد را اضافه کنید. بعد از اینکه به صفحه ایجاد فیلد رسیدید، دو شرط برای این فیلد سفارشی وجود دارد:
- را نام سیستم باید باشد automation_id
- را تایپ کنید باید باشد متن
ارسال نتایج به TestRail #
پس از اتمام نصب TestRail CLI و تکمیل پیکربندی نمونه TestRail، می توانید نتایج تست خود را به سادگی با استفاده از یک خطی مانند زیر آپلود کنید.
$ trcli -y \
> -h https://INSERT-INSTANCE-NAME.testrail.io \
> --project "My Project" \
> --username INSERT-EMAIL \
> --password INSERT-PASSWORD \
> parse_junit \
> --title "Pytest Automated Test Run" \
> -f junit-report.xml
توجه داشته باشید که نام فایل پس از -f در صورتی که مکان پیش فرض آن را تغییر دهید، گزینه باید با مسیر فایل گزارش شما مطابقت داشته باشد. همه گزینه های دیگر باید مطابق با نمونه و پروژه TestRail شما باشد. میتوانید سایر گزینههای خط فرمان را با بررسی فایل README.md در مخزن پروژه، مقاله مستندات TRCLI یا راهنمای CLI تعبیهشده از طریق دستورات زیر بررسی کنید.
$ trcli --help
$ trcli parse_junit --help
تجسم نتایج در TestRail #
اکنون، اگر در پروژه TestRail خود به صفحه Test Cases بروید، متوجه خواهید شد که TestRail CLI به طور خودکار تستکیسها را که در گزارش نتایج تست شما وجود داشت ایجاد می کند. توجه داشته باشید که با ترکیب کردن یک شناسه اتوماسیون منحصر به فرد اضافه شده است classname و name ویژگی های هر آزمون در گزارش JUnit. این شناسه اتوماسیون برای نگاشت آزمایشهای روی پایه کد اتوماسیون شما به تستکیسها در TestRail استفاده میشود. این بدان معناست که هر بار که TestRail CLI را اجرا میکنید، ابتدا سعی میکند یک تستکیس موجود در TestRail را مطابقت دهد و فقط در صورتی که تستکیس با آن شناسه اتوماسیون وجود نداشته باشد، مورد جدیدی ایجاد میکند.
#
اگر نام آزمایشهای خود، نام فایل یا مکان آن را تغییر دهید، شناسه اتوماسیون آن تستها تغییر میکند و آنها به تستکیسها موجود در TestRail نگاشت نمیشوند.

در اجرای تست & صفحه نتایج، ما می توانیم ببینیم که یک آزمایش با نام اجرا می شود اجرای تست خودکار Pytest ایجاد شد. با باز کردن آن، میتوانیم جزئیات هر یک از نتایج تست خودکار را بیشتر بررسی کنیم و تجزیه و تحلیل سطح بالایی از علت شکست هر آزمایش انجام دهیم، زیرا پیام خطای ارائه شده توسط چارچوب اتوماسیون تست نیز در نتیجه آزمون ثبت شده است، همانطور که در تصویر زیر مشاهده میکنید.

بعدش چی؟ #
اکنون که نتایج تست خود را روی TestRail متمرکز کردهاید، نه تنها میتوانید نتایج تستهای خودکار خود را به همراه پیامهای خطای آزمایشهای ناموفق بررسی کنید، بلکه میتوانید تلاشهای آزمایشی دستی و خودکار خود را در گزارشهایی که پوشش کامل آزمون پیرامون برنامهتان را به شما نشان میدهند و حتی پیشرفت اتوماسیون آزمایش را ردیابی کنید، تجمیع کنید. همچنین میتوانید یک اشکال را مستقیماً از نتیجه آزمایش خودکار به یک ردیاب مشکل ترجیحی خود گزارش دهید، همانطور که برای نتایج تست دستی خود انجام میدهید!
می توانید به آن نگاه کنید گزارشهای TestRail و ویدئو معیارهای تست برای آشنایی با نحوه استفاده از قابلیت های گزارش دهی TestRail.

