Test cases in the Magento Functional Testing Framework (MFTF) are defined in XML as
<tests> is a Codeception test container that contains multiple individual tests with test metadata and before and after actions.
<tests> is considered a sequence of actions with associated parameters.
Any failed assertion within a test constitutes a failed test.
<after> hooks are not global within
They only apply to the
<test> in which they are declared.
The steps in
<after> are run in both successful and failed test runs.
The following diagram shows the structure of an MFTF test case:
The format of
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <?xml version="1.0" encoding="UTF-8"?> <tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> <test name="" insertBefore="" insertAfter=""> <annotations> <!-- TEST ANNOTATIONS --> </annotations> <before> <!-- ACTIONS AND ACTION GROUPS PERFORMED BEFORE THE TEST --> </before> <after> <!-- ACTIONS AND ACTION GROUPS PERFORMED AFTER THE TEST --> </after> <!-- TEST ACTIONS, ACTION GROUPS, AND ASSERTIONS--> </test> </tests>
The following conventions apply to MFTF tests:
- All names within the framework are in the CamelCase format.
<test>name must be alphanumeric.
- Each action and action group has its own identifier
<stepKey>for reference purposes.
- A test may have any number of assertions at any point within the
<test>is included in
<suite>, it cannot be generated in isolation to the rest of the contents of the suite (see suites for details).
<test> tags per XML file can make it hard to find and organize tags.
To simplify, we generate one
test.php file per
<test> tag provided, though we support both single and multiple
<test> tags per XML file.
There are several XML elements that are used in
<tests> in the MFTF.
<tests> is a container for multiple tests. It is a group of test methods that define test flows within a test case.
<tests> must contain at least one
<test> is a set of steps, including actions and assertions. It is a sequence of test steps that define test flow within a test method.
||string||optional||The test identifier.|
||string||optional||This option is used for merging. It enables you to add all test actions contained in the original test into a test with the same name BEFORE the test step with
||string||optional||Used to warn about the future deprecation of the test. String will appear in Allure reports and console output at runtime.|
||string||optional||A name of the parent test to extend.|
<test> may also contain
<after>, any action, or
Annotations are supported by both Codeception and Allure.
Codeception annotations typically provide metadata and are able to influence test selection. Allure annotations provide metadata for reporting.
<before> wraps the steps to perform before the
<before> may contain these child elements:
<after> wraps the steps to perform after the
The steps are run in both successful and failed test runs.
<after> may contain:
<actionGroup> calls a corresponding action group.
||string||required||References the required action group by its
||string||required||Identifies the element within
<actionGroup> may contain
<argument> sets an argument that is used in the parent
||string||optional||Name of the argument.|
||string||optional||Value of the argument.|
See Action groups for more information.