Understanding Target, Interaction and Location¶
When one writes a test using
UITester, three categories of objects are
is an object on which we can perform an action (e.g. a mouse click) to modify an application state, or retrieve a GUI application state, or search for other contained targets (e.g. a table widget that contains buttons and text).
is an object that wraps the information for performing an action or retrieving GUI state(s), but it does not necessarily contain information to a Target. For example, both
DisplayedTextare interactions that can be used against different targets. An interaction can also be specialized for a specific target if needed.
is an object that wraps the information for searching a target from a container target, but it does not necessarily contain information specific to a Target. For example, both
TargetByNameare locations for identifying a contained target via an id or a name, which can be used against different targets. A location can also be specialized for a specific target if needed.
locate()resolves a location.
Why is Target protected?¶
_target attribute is protected because it often exposes
implementation details of the GUI component being tested (e.g. it may refer to
the Qt specific implementation of a ButtonEditor). Since it is best for tests
to avoid dependencies on implementation details, its usage in test code is
However, this attribute is expected to be used while extending the testing API, which inevitably requires knowledge of the implementation details on the tested components. If the implementation details and the testing support code are not maintained together, tests may be subject to breakages caused by changes to implementation details that do not affect the overall behavior. Developers should evaluate based on context whether they should proceed.