我想将环境变量传递给flutter drive测试。
flutter drive
能够读取已启动的应用程序或测试代码中的值都很好,因为我在应用程序中需要它,并且如果只能在测试代码中获得它,则可以使用以下命令将其传递给应用程序 driver.requestData()
driver.requestData()
例如,Travis允许我指定不会以任何方式公开的环境变量(例如脚本内容和日志输出)。
我想以此方式指定用户名和密码,以便在应用程序内部使用。
Platform.environment在运行驱动程序测试之前,我尝试使用Dart 读取环境变量,它似乎工作正常。下面是一个简单的示例,该示例使用FLUTTER_DRIVER_RESULTSenv变量设置测试摘要的输出目录。
Platform.environment
FLUTTER_DRIVER_RESULTS
import 'dart:async'; import 'dart:io' show Platform; import 'package:flutter_driver/flutter_driver.dart'; import 'package:test/test.dart'; void main() { // Load environmental variables String resultsDirectory = Platform.environment['FLUTTER_DRIVER_RESULTS'] ?? '/tmp'; print('Results directory is $resultsDirectory'); group('increment button test', () { FlutterDriver driver; setUpAll(() async { // Connect to the app driver = await FlutterDriver.connect(); }); tearDownAll(() async { if (driver != null) { // Disconnect from the app driver.close(); } }); test('measure', () async { // Record the performance timeline of things that happen Timeline timeline = await driver.traceAction(() async { // Find the scrollable user list SerializableFinder incrementButton = find.byValueKey( 'increment_button'); // Click the button 10 times for (int i = 0; i < 10; i++) { await driver.tap(incrementButton); // Emulate time for a user's finger between taps await new Future<Null>.delayed(new Duration(milliseconds: 250)); } }); TimelineSummary summary = new TimelineSummary.summarize(timeline); summary.writeSummaryToFile('increment_perf', destinationDirectory: resultsDirectory, pretty: true); summary.writeTimelineToFile('increment_perf', destinationDirectory: resultsDirectory, pretty: true); }); }); }