Test cases in the Magento Functional Testing Framework (MFTF) are defined in XML as
<tests> is a Codeception test container that contains individual test
<test> with its metadata (
<annotations>), before (
<before>) and after (
<test> 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 a test XML file is:
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:
<test>tag is allowed per test XML file.
- All names within the framework are in the PascalCase format and must be alphanumeric.
- Each action and action group call should have its own identifier
- A test may have any number of assertions at any point within the
<test>is included in
<suite>, it cannot be generated in isolation from
<after>section of the suite (see suites for details).
There are several XML elements that are used within
<test> in the MFTF.
<tests> is a container for test and must contain exactly one
||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.|
Codeception annotations typically provide metadata and are able to influence test selection. Allure annotations provide metadata for reporting.
<before> wraps the steps that are preconditions for the
<test>. For example: Change configuration, create Customer Account, Create Category and Product.
<before> may contain these child elements:
<after> wraps the steps to perform after the
<test>. The steps are run in both successful and failed test runs. The goal of this section is to perform cleanup (revert the environment to the pre-test state).
<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.