را گردش کار کد اول برای تیم های فنی که طراحی تست را مستقیماً در پایگاه کد خود مدیریت می کنند ایده آل است. این به شما امکان می دهد نتایج تست خودکار را با TestRail همگام کنید بدون ایجاد یا مدیریت دستی تستکیسها در TestRail UI.
این رویکرد مدیریت تست شما را سبک وزن نگه میدارد و در خط لوله CI/CD شما یکپارچه نگه میدارد، در حالی که همچنان از طریق TestRail قابلیتهای دید و گزارشدهی به تیم شما را میدهد.

چرا از Code-First Workflow استفاده کنیم؟ #
- از سربار تستکیسها تکراری در TestRail جلوگیری می کند
- طراحی تست و منطق را در کد اتوماسیون شما حفظ می کند
- به طور خودکار تستکیسها را بر اساس اجرای آزمایش شما همگامسازی و ایجاد میکند
- ایده آل برای تیم های مهندسی که “ابتدا تست های خود را کدگذاری می کنند” قبل از مدیریت آنها در یک ابزار
| جوانب مثبت | منفی |
|---|---|
|
|
تفاوتهای Code-First در مقابل Specification-First #
| ویژگی | کد-اول | مشخصات – اول |
|---|---|---|
| طراحی کیس در … | کد اتوماسیون | رابط کاربری TestRail |
| تستکیسها ایجاد شده در … | به صورت خودکار توسط CLI | از قبل به صورت دستی یا از طریق API ایجاد شده است |
| ایده آل برای … | تیم های فنی و کد محور | تیم های رهبری QA با برنامه ریزی در TestRail |
| خطر تکرار | بالاتر اگر نقشه برداری ها مدیریت نمی شوند | پایین تر |
| منبع نقشه برداری |
automation_id (به عنوان مثال، classname.name) |
شناسه های کیس TestRail |
بارگذاری نتایج آزمون با استفاده از CLI #
پیش نیازها #
قبل از شروع آپلود نتایج تست:
- TestRail CLI را نصب کنید: دنبال کنید راهنمای نصب TestRail CLI.
-
یک فیلد سفارشی به TestRail اضافه کنید:
- برو به مدیر > سفارشی سازی ها > فیلد را اضافه کنید
- ایجاد یک فیلد به نام (نام سیستم)
automation_id - نوع میدان: رشته
- اعمال می شود برای: تستکیسها
- این فیلد برای نگاشت تست های مبتنی بر کد به تستکیسها TestRail استفاده می شود.

نتایج آزمون را بارگذاری کنید #
۱. گزارش JUnit XML خود را آماده کنید #
در اینجا یک نمونه فایل نتیجه آزمون به سبک JUnit آمده است:
<testsuites name="test suites root">
<testsuite failures="0" errors="0" skipped="1" tests="1" time="0.05" name="tests.LoginTests">
<testcase classname="tests.LoginTests" name="test_case_1" time="159">
<skipped message="Please skip">skipped by user</skipped>
</testcase>
<testcase classname="tests.LoginTests" name="test_case_2" time="650"/>
<testcase classname="tests.LoginTests" name="test_case_3" time="159">
<failure message="Fail due to...">failed due to…</failure>
</testcase>
</testsuite>
</testsuites>
#
۲. با CLI آپلود کنید #
این دستور نتایج تست را آپلود می کند و در صورت نیاز تستکیسها را به طور خودکار ایجاد می کند:
# Uploads results.xml to TestRail using code-first mapping
trcli -y \
-h https://<INSTANCE-NAME>.testrail.io \
--project "TRCLI Test" \
--username <YOUR_EMAIL> \
--password <API_KEY_OR_PASSWORD> \
parse_junit \
--title "Automated Tests Run" \
-f results.xml
پارامترهای توضیح داده شده:
-
-y: از اعلان های تایید صرف نظر می کند، ایده آل برای استفاده CI -
--project: نام پروژه TestRail شما -
--title: نام برای اجرای تست -
-f: مسیر فایل نتایج JUnit XML شما
نحوه کار نقشه برداری #
هر تستکیس با استفاده از automation_id فیلد، که به طور خودکار از کلاس تست و نام در قالب:
<classname>.<testname>
به عنوان مثال،
<testcase classname="tests.LoginTests" name="test_case_1"/>
نتایج در automation_id:
tests.LoginTests.test_case_1
TestRail این را با موارد موجود با استفاده از automation_id. اگر نتواند یکی را پیدا کند، یک تستکیس جدید برای شما ایجاد می کند.
automation_id فیلدها قبل از آپلود نتایج
automation_id برای اطمینان از دقیق ماندن نگاشتها.
⚠️ هشدار: تغییر در نام یا ساختار آزمون می تواند منجر به تستکیسها تکراری شود.
تغییر نام یک تست یا جابجایی مکان آن در کد منجر به یک کد جدید می شود automation_id، که ممکن است موارد تکراری ایجاد کند.
#
درک نگاشت تستکیس از طریق automation_id
#
یکی از ویژگیهای اصلی گردش کار کد-اول، نگاشت تستکیس خودکار با استفاده از آن است automation_id فیلد در TestRail. این به کد اتوماسیون شما و کیسهای تست TestRail اجازه میدهد تا بدون نیاز به افزودن دستی شناسههای کیس TestRail به کد آزمایشی خود، هماهنگ بمانند.
هر بار که نتایج را با CLI آپلود می کنید، سعی می کند تستکیسها را بر این اساس مطابقت دهد automation_id. اگر مطابقت پیدا نکرد، به طور خودکار یک تستکیس جدید ایجاد می کند.
نمونه قطعه JUnit XML را در زیر بگیرید. CLI ترکیبی از classname و name ویژگی های ساخت یک شناسه اتوماسیون منحصر به فرد برای هر آزمایش:
<testcase classname="tests.LoginTests" name="test_login_with_invalid_password" time="159"/>
<testcase classname="tests.LoginTests" name="test_login_with_valid_credentials" time="221"/>
این منجر به موارد زیر می شود automation_id ارزش ها:
tests.LoginTests.test_login_with_invalid_password
tests.LoginTests.test_login_with_valid_credentials
وقتی CLI را اجرا میکنید، این رشتهها را با هم مطابقت میدهد automation_id فیلد در تستکیسها TestRail شما:
$ trcli -y \
-h https://INSTANCE-NAME.testrail.io \
--project "Login Tests" \
--username user@domain.com \
--password passwordORapikey \
parse_junit \
--title "Login Feature Tests" \
-f login_tests_results.xml
خروجی CLI:
Parsing JUnit report.
Processed 2 test cases in 1 section.
Found 1 matching TestRail case.
Adding 1 new test case to the suite.
Creating test run. Run created: https://INSTANCE-NAME.testrail.io/index.php?/runs/view/456
Adding results: 2/2, Done.
در این مثال:
- یک تستکیس قبلاً از طریق نقشه برداری شده بود
automation_id - یک تستکیس وجود نداشت و به طور خودکار ایجاد شد
- هر دو نتیجه در یک اجرا آپلود شدند
مثال چرخه زندگی نقشه برداری #
فرض کنید بعداً یک آزمایش را اصلاح کردید:
- <testcase classname="tests.LoginTests" name="test_login_with_valid_credentials"/>
+ <testcase classname="tests.AuthTests" name="test_login_successful"/>
شناسه جدید اتوماسیون تبدیل می شود:
tests.AuthTests.test_login_successful
اگر این نتیجه را بدون بهروزرسانی آپلود کنید automation_id در TestRail، CLI خواهد شد یک تستکیس جدید ایجاد کنید، موجود را به روز نکنید.
automation_id در موارد TestRail موجود اگر می خواهید آنها را مطابقت دهید<package>.<module>.<test_name>)
نقشه برداری از گزارش Real JUnit #
بیایید نگاهی دقیقتر به این قطعه JUnit XML در دنیای واقعی بیاندازیم و چگونه TestRail CLI آن را تفسیر میکند:
<testsuites name="test suites root">
<testsuite failures="0" errors="0" skipped="1" tests="1" time="0.05" name="tests.LoginTests">
<testcase classname="tests.LoginTests" name="test_case_1" time="159">
<skipped type="pytest.skip" message="Please skip">
skipped by user
</skipped>
</testcase>
<testcase classname="tests.LoginTests" name="test_case_2" time="650"/>
<testcase classname="tests.LoginTests" name="test_case_3" time="159">
<failure type="pytest.failure" message="Fail due to...">
failed due to…
</failure>
</testcase>
</testsuite>
</testsuites>
CLI شناسه های اتوماسیون زیر را تولید می کند:
| خط تست کیس |
automation_id تولید شده است |
|---|---|
| <testcase classname=”tests.LoginTests” name=”test_case_1″/> | tests.LoginTests.test_case_1 |
| <testcase classname=”tests.LoginTests” name=”test_case_2″/> | tests.LoginTests.test_case_2 |
| <testcase classname=”tests.LoginTests” name=”test_case_3″/> | tests.LoginTests.test_case_3 |
سپس می توانید این دستور را اجرا کنید تا نتایج را به TestRail فشار دهید:
trcli -y \
-h https://INSTANCE-NAME.testrail.io \
--project "TRCLI Test" \
--username user@domain.com \
--password passwordORapikey \
parse_junit \
--title "Automated Tests Run" \
-f results.xml
خلاصه نتایج از CLI
Parsing JUnit report.
Processed 3 test cases in 1 sections.
Found 3 test cases not matching any TestRail case.
Adding missing sections to the suite.
Adding missing test cases to the suite.
Adding test cases: 3/3, Done.
Creating test run. Run created: https://INSTANCE-NAME.testrail.io/index.php?/runs/view/123
Adding results: 3/3, Done.
Submitted 3 test results in 8.9 secs.
پس از اجرا:
- تستکیسها جدید در پروژه TestRail شما ایجاد می شوند

- هر کدام یک ویژگی منحصر به فرد خواهند داشت
automation_idمطابق با الگو - نتایج، از جمله حالت های رد شده و ناموفق، در TestRail منعکس می شوند
اکنون می توانید آنها را در آن مشاهده کنید اجراهای آزمایشی & نتایج یا تستکیسها، با قابلیت ردیابی به مجموعه اتوماسیون شما.
یادداشت های پایانی #
- این گردش کار برای تیم هایی که فرآیند QA خود را از طریق کد مدیریت می کنند و به یکپارچه سازی TestRail سبک وزن نیاز دارند، بهینه است.
- خودت را نگه دار
automation_idارزش های سازگار و به روز برای بهترین نتایج.- اگر مایل هستید آپلود نتایج اتوماسیون برای تستکیسها که از قبل در TestRail وجود دارد، حتماً قبل از آپلود نتایج اتوماسیون خود، automation_id را برای آن تستکیسها به روز کنید
- اگر شما نام یا مکان تست را در مجموعه اتوماسیون خود تغییر دهید بعداً، یک تستکیس جدید در TestRail ایجاد میکند، مگر اینکه فیلد automation_id را برای تستکیس در TestRail نیز بهروزرسانی کنید.
- می توانید اجراهای آپلود شده را در آن مرور کنید TestRail > اجراهای آزمایشی & نتایج > تست های خودکار اجرا می شوند.
🎓 سطح مهارت های تست خود را با آکادمی تست ریل!
دورههای رایگان و خودسرانه را کاوش کنید تا بیشترین بهره را از TestRail ببرید.
از کجا کمک بگیریم #


