---
name: "Test::Expect"
section: "3pm"
platform: "linux"
package: "libtest-expect-perl"
version: "0.34-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Test::Expect"
---

# Test::Expect(3pm)

Automated driving and testing of terminal-based programs

## NAME

Test::Expect - Automated driving and testing of terminal-based programs

## SYNOPSIS

```
  # in a t/*.t file:
  use Test::Expect;
  use Test::More tests => 13;
  expect_run(
    command => ["perl", "testme.pl"],
    prompt  => 'testme: ',
    quit    => 'quit',
  );
  expect("ping", "pong", "expect");
  expect_send("ping", "expect_send");
  expect_is("* Hi there, to testme", "expect_is");
  expect_like(qr/Hi there, to testme/, "expect_like");
```

## DESCRIPTION

Test::Expect is a module for automated driving and testing of terminal-based programs.  It is handy for testing interactive programs which have a prompt, and is based on the same concepts as the Tcl Expect tool.  As in Expect::Simple, the Expect object is made available for tweaking.

Test::Expect is intended for use in a test script.

## SUBROUTINES

### expect\_run

The expect\_run subroutine sets up Test::Expect. You must pass in the interactive program to run, what the prompt of the program is, and which command quits the program:

```
  expect_run(
    command => ["perl", "testme.pl"],
    prompt  => 'testme: ',
    quit    => 'quit',
  );
```

The `"command"` may either be a string, or an arrayref of program and arguments; the latter for bypasses the shell.

### expect

The expect subroutine is the catch all subroutine. You pass in the command, the expected output of the subroutine and an optional comment.

```
  expect("ping", "pong", "expect");
```

### expect\_send

The expect\_send subroutine sends a command to the program. You pass in the command and an optional comment.

```
  expect_send("ping", "expect_send");
```

### expect\_is

The expect\_is subroutine tests the output of the program like Test::More's is. It has an optional comment:

```
  expect_is("* Hi there, to testme", "expect_is");
```

### expect\_like

The expect\_like subroutine tests the output of the program like Test::More's like. It has an optional comment:

```
  expect_like(qr/Hi there, to testme/, "expect_like");
```

### expect\_handle

This returns the Expect object.

### expect\_quit

Closes the Expect handle.

## SEE ALSO

Expect, Expect::Simple.

## AUTHOR

Best Practical Solutions, LLC \<modules@bestpractical.com\>

Original module by Leon Brocard, \<acme@astray.com\>

## BUGS

## COPYRIGHT

This extension is Copyright (C) 2015 Best Practical Solutions, LLC.

Copyright (C) 2005, Leon Brocard

This module is free software; you can redistribute it or modify it under the same terms as Perl itself.
