Running Tests¶
BugZoo’s Python API provides an interface for executing the individual test
cases belonging to the test suite for a particular bug.
The tests
property of a Bug
provides access to its
TestSuite
. The code snippet below provides an example of executing
each of the tests contained within a TestSuite
. The outcome of a
test execution is provided as a TestOutcome
object.
outcomes = {} # type: Dict[TestCase, TestOutcome]
for test in snapshot.tests:
outcomes[test] = client.containers.test(container, test)
Individual tests can also be fetched using TestSuite
’s []
operator:
client.containers.test(container, snapshot.tests["test-foo"])
API Reference¶
-
class
TestCase
[source]¶ Describes an individual test case for a particular snapshot.
-
name
→ str¶ The unique name of the test case.
-
oracle
→ TestCaseOracle¶ The oracle used by this test case.
-
time_limit
→ int¶ The maximum number of seconds that an execution of this test case is allowed before it is terminated and considered a failure.
-
command
→ str¶ The shell command that is used to execute this test case.
-
context
→ str¶ The absolute path of the directory in which the shell command for this test case should be executed.
-
expected_outcome
→ Optional[bool]¶ An optional flag that specifies whether or not an execution of this test case is expected to succeed for its corresponding bug. Used to indicate test cases that are expected to fail. Set to
True
if the test case is expected to pass,False
if it is expected, andNone
if its expected outcome is unknown.
-
kill_after
→ int¶ Upon reaching the time limit, the process inside the container that is responsible for a particular test execution is sent to a
SIGTERM
signal to instruct it to terminate cleanly.kill_after
specifes the number of seconds that may pass before aSIGKILL
signal is sent to the process. Note thatSIGTERM
is used to ensure that any coverage information is flushed to disk before the command is terminated.
-
-
class
TestCaseOracle
[source]¶ Used to determine whether the outcome of a test case execution should be considered as a success or failure.
-
check
(response: bugzoo.cmd.ExecResponse) → bool[source]¶ Determines whether the raw command output from a test execution satisfies this oracle.
-
-
class
TestOutcome
[source]¶ Describes the outcome of a test execution.
-
passed
→ bool¶ A flag indicating whether or not the test execution succeeded (as determined by its oracle).
-
duration
→ float¶ The duration of the test execution, measured in seconds.
-
-
class
TestSuite
[source]¶ Describes the test suite for a particular snapshot. Test suites are composed of a set of uniquely named individual test cases.
-
__iter__
() → Iterator[bugzoo.core.test.TestCase][source]¶ Returns an iterator over the test cases contained within this test suite.
-
__getitem__
(name: str) → bugzoo.core.test.TestCase[source]¶ Attempts to fetch a test case from this test suite by its name.
- Raises
KeyError – if no test case with the given name belongs to this test suite.
-