dart-test

dart pub add dev:tracera_test

Dart ≥ 3.8 और package:test ≥ 1.25 आवश्यक (ऑटोटेस्ट एडेप्टर देखें)। tracera_test pub.dev पर।

एनवायरनमेंट वेरिएबल और रन मोड: ऑटोटेस्ट एडेप्टर।

main फ़ंक्शन की शुरुआत में installTracera() एक बार कॉल करें। मानक package:test इम्पोर्ट बनाए रखें; केवल installTracera और tracera कॉल जोड़ें:

import 'package:test/test.dart';
import 'package:tracera/tracera.dart' as tracera;
import 'package:tracera_test/tracera_test.dart';

void main() {
  installTracera();

  test('user can sign in', () {
    tracera.step('open login', () {
      // ...
    });
  }, tags: ['tracera-id-42']);
}

testCaseId और autotestName बाँधना

test या group में टैग tracera-id-‹id› जोड़ें। autotestName सेट करने के लिए tracera-name-‹name› जोड़ें। नाम वाले टैग में स्पेस नहीं हो सकता; स्पेस वाला नाम चाहिए तो टेस्ट के अंदर tracera.testCase से बाँधें। नाम टैग न दिया हो, तो autotestName में package:test का टेस्ट नाम आता है।

test('user can sign in', () {
  // ...
}, tags: ['tracera-id-42', 'tracera-name-e2e_sign_in']);

test('user can sign out', () {
  tracera.testCase(43, 'e2e/sign out');
});

अपरिभाषित टैग के बारे में package:test की चेतावनियाँ हटाने के लिए Tracera टैग dart_test.yaml के tags: में सूचीबद्ध करें।

Skip

टेस्ट के अंदर markTestSkipped('reason') कॉल करें। परिणाम Skipped के रूप में रिपोर्ट होता है, और कारण परिणाम में comment के रूप में जुड़ता है।

test('checkout', () {
  markTestSkipped('needs a seeded account');
}, tags: ['tracera-id-42']);

test या group पर skip: रिपोर्ट में शामिल नहीं होता।

स्टेप्स

tracera.step('…', () { … }) उपयोग करें। setUp कॉलबैक परिणाम के सेटअप में, टेस्ट बॉडी टेस्ट में और tearDown कॉलबैक टीयरडाउन में जाता है। setUpAll / tearDownAll के अंदर के स्टेप रिपोर्ट में शामिल नहीं होते।

setUp(() {
  tracera.step('open shop', () {});
});

test('checkout', () async {
  tracera.testCase(10);

  await tracera.step('add item', () async {
    tracera.step('nested leaf', () {});
  });
});

tearDown(() {
  tracera.step('close shop', () {});
});

कमेंट, एरर और अटैचमेंट

सीमाएँ और अनुमत MIME प्रकार: ऑटोटेस्ट एडेप्टर।

tracera.comment, tracera.error और अटैचमेंट खुले स्टेप में जुड़ते हैं, और कोई स्टेप खुला न हो तो परिणाम में। tracera.attachmentFile फ़ाइल पथ लेता है; tracera.attachmentBytes नाम और बाइट्स लेता है, साथ में वैकल्पिक mimeType। अटैचमेंट परिणाम रिपोर्ट होने पर अपलोड होते हैं।

tracera.comment('result-level note');
tracera.error('result-level error');
tracera.attachmentFile('test/fixtures/screenshot.png');
tracera.step('open login', () {
  tracera.comment('step note');
  tracera.attachmentBytes(
    'body.json',
    utf8.encode('{"ok":true}'),
    mimeType: 'application/json',
  );
});

पैरामीटराइज़्ड टेस्ट

लूप में हर पंक्ति के लिए एक test बनाएँ। नाम न दिया हो, तो autotestName में टेस्ट नाम आता है, इसलिए हर पंक्ति को अलग शीर्षक दें। हर पंक्ति के लिए नाम तय करना हो तो उसे tracera.testCase में दें:

for (final login in ['alice', 'bob']) {
  test('sign in as $login', () {
    tracera.testCase(7, 'login as $login');
  });
}

retry: से टेस्ट दोबारा चलने पर केवल अंतिम प्रयास रिपोर्ट होता है। तब परिणाम के Env टैब में DART_TEST_RETRY जुड़ता है (ऑटोटेस्ट एडेप्टर देखें)।