Flutter测试辅助插件test_rail_dart的使用

发布于 1周前 作者 eggper 来自 Flutter

Flutter测试辅助插件test_rail_dart的使用

Test Rail Dart

此插件是Test Rail API的一个轻量级封装,它允许在Dart中进行自动化测试报告。它使用户能够通过Dart界面开始、报告用例通过/失败,并关闭测试运行。

开始使用

初始化TestRail实例使用config方法:

TestRail.config(
  username: '用户名',
  password: '密码',
  /// 指向Test Rail服务器的URL => https://example.testrail.com
  serverDomain: 'https://YOUR_SERVER.testrail.com'
)

使用方法

创建或更新测试运行

首先创建一个新的测试运行:

/// 创建一个新测试运行
final newRun = await TestRun.create(
  name: '测试执行',
  projectId: 1
);

/// 将用例添加到运行中
await newRun.updateRun(
  caseIds: [1, 2, 3, 5],
);

创建测试运行后,可以通过用例报告结果:

final result = await newRun.addResultForCase(
  caseId: 1,
  statusId: 1,
);

// 可选地将截图或其他图像添加到结果中
await result.addAttachmentToResult(
  '/workspace/attachments/failure.png',
);

获取数据

可以检索历史上的运行、用例和部分:

final testCase = await TestCase.get(1);

final testRun = await TestRun.get(1);

final testSection = await TestSection.get(1);

示例代码

以下是完整的示例代码:

// 忽略未使用的局部变量
import 'package:test_rail_dart/test_rail.dart';
import 'package:test_rail_dart/test_case.dart';
import 'package:test_rail_dart/test_run.dart';
import 'package:test_rail_dart/test_section.dart';

void main(List<String> args) async {
  TestRail.configure(
    serverDomain: args[0],
    username: args[1],
    password: args[2],
  );

  // 替换为你自己的caseId
  final testCase = await TestCase.get(142864);

  // 替换为你自己的projectId,额外参数在方法中可用
  final testRuns = await TestRun.getAll(projectId: 1125, limit: 10);

  // 替换为你自己的projectId
  final testRun = await TestRun.get(1125);

  // 替换为你自己的sectionId
  final section = await TestSection.get(13);
  final newRun = await TestRun.create(
    caseIds: [testCase.id],
    description: '121',
    name: 'newRun',
    // 替换为你自己的projectId
    projectId: 134,
  );

  final testCaseResult = await newRun.addResultForCase(
    testCase.id,
    // 状态 - 1: 通过
    statusId: 1,
  );

  await newRun.update(
    caseIds: [1, 6, 7],
    includeAll: false,
  );

  // 替换为附件路径
  await testCaseResult.addAttachment('<attachment_path>');
}

更多关于Flutter测试辅助插件test_rail_dart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter测试辅助插件test_rail_dart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter项目中,使用test_rail_dart插件可以帮助你与TestRail集成,从而更好地管理和报告你的测试案例。以下是一个关于如何在Flutter项目中集成和使用test_rail_dart的示例代码。

首先,确保你已经在pubspec.yaml文件中添加了test_rail_dart依赖:

dependencies:
  flutter:
    sdk: flutter
  test_rail_dart: ^最新版本号  # 请替换为实际发布的最新版本号

然后,运行flutter pub get来安装依赖。

接下来,你需要配置TestRail的API密钥和URL。通常,这些信息会在你的TestRail账户设置中找到。

下面是一个简单的示例,展示如何使用test_rail_dart插件来获取一个项目中的所有测试用例:

import 'package:flutter/material.dart';
import 'package:test_rail_dart/test_rail_dart.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: TestRailIntegrationPage(),
    );
  }
}

class TestRailIntegrationPage extends StatefulWidget {
  @override
  _TestRailIntegrationPageState createState() => _TestRailIntegrationPageState();
}

class _TestRailIntegrationPageState extends State<TestRailIntegrationPage> {
  List<TestCase> testCases = [];

  @override
  void initState() {
    super.initState();
    _fetchTestCases();
  }

  Future<void> _fetchTestCases() async {
    // 配置TestRail客户端
    final testRailClient = TestRailClient(
      baseUrl: 'https://your-testrail-url.testrail.io/', // 替换为你的TestRail URL
      user: 'your-email@example.com',                    // 替换为你的TestRail用户名或邮箱
      password: 'your-api-key',                         // 替换为你的TestRail API密钥
    );

    try {
      // 获取项目ID为1的所有测试用例
      final response = await testRailClient.getCases(projectId: 1);
      
      // 更新状态
      setState(() {
        testCases = response.map((caseData) => TestCase.fromJson(caseData)).toList();
      });
    } catch (e) {
      print('Error fetching test cases: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('TestRail Integration'),
      ),
      body: ListView.builder(
        itemCount: testCases.length,
        itemBuilder: (context, index) {
          final testCase = testCases[index];
          return ListTile(
            title: Text('Case ID: ${testCase.id}, Title: ${testCase.title}'),
          );
        },
      ),
    );
  }
}

// 定义一个TestCase类来匹配TestRail返回的JSON结构
class TestCase {
  int id;
  String title;
  // 根据TestRail API返回的JSON结构添加其他字段

  TestCase({required this.id, required this.title});

  factory TestCase.fromJson(Map<String, dynamic> json) {
    return TestCase(
      id: json['id'] as int,
      title: json['title'] as String,
      // 添加其他字段的解析
    );
  }
}

在这个示例中,我们创建了一个Flutter应用,它在初始化时从TestRail获取所有测试用例,并将它们显示在一个列表中。你需要替换baseUrluserpassword字段的值以匹配你的TestRail配置。

注意:

  • TestRailClient是一个假设的类,实际使用时你需要根据test_rail_dart插件的文档来创建和配置客户端。
  • 确保你已经正确处理了API密钥和敏感信息,不要将它们硬编码在客户端代码中,而是使用环境变量或安全的密钥管理服务。
  • 根据你的需求,你可能需要扩展TestCase类以包含TestRail API返回的所有相关字段。

请查阅test_rail_dart插件的官方文档以获取更多详细信息和API使用方法。

回到顶部