dart-test
dart pub add dev:tracera_test
Требуются Dart ≥ 3.8 и package:test ≥ 1.25 (см. Адаптеры автотестов). tracera_test на pub.dev.
Переменные окружения и режим прогона: Адаптеры автотестов.
Вызовите installTracera() один раз в начале функции main. Используйте стандартные импорты 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
Добавьте тег tracera-id-‹id› к test или group. Тег tracera-name-‹name› задаёт autotestName. В теге имени нельзя использовать пробелы; чтобы указать имя с пробелами, привяжите кейс внутри теста через 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 в разделе tags: файла dart_test.yaml.
Пропуск
Вызовите markTestSkipped('reason') внутри теста. Результат отправляется как Skipped, а причина добавляется в результат как comment.
test('checkout', () {
markTestSkipped('needs a seeded account');
}, tags: ['tracera-id-42']);
Аргумент skip: у test или group в отчёт не попадает.
Шаги
Используйте 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 (см. Адаптеры автотестов).