Introduction¶
Arjuna uses a lot of third party libraries to provide its functionality:
lxml
requests
requests-toolbelt
selenium
webdriver_manager
xlrd
xlwt
pyparsing
pyhocon
pytest
pytest-html
pytest-dependency
PyYAML
mimesis
jsonpath-rw
jsonpath-rw-ext
genson
jsonschema
Pallets-Sphinx-Themes
oauthlib
requests_oauthlib
bs4
browsermob-proxy
haralyzer
mysql-connector-python
Some of this is completely wrapped which means you need not worry about them.
However, some libraries like pytest, selenium or PyYAML etc have an indirect impact on the way testers write code or create input files in Arjuna.
This section contains helpful information about such libraries.
Beware of the Boolean Interpretation in YAML¶
YAML specification as used by PyYAML converts many strings to their boolean counterparts (True/False). Arjuna uses YAML for most of its input file formats. When you are creating such YAML files, you need to be aware of this YAML parsing behavior.
One example is let’s say you use a locator in GNS files where value of attribute abc is Yes. You end up writing something like following in GNS:
labels:
some_button:
fattr:
abc: Yes
What you later see is that there is an error in finding the element and the corresponding CSS Selector generated is shown as the following in exception message:
*[abc='True']
The above CSS Selector is obviously not what you intented for the situation. What you meant was:
*[abc='Yes']
This is because of YAML’s support for intuitively converting some string literals to boolean. Following are some strings that are converted to True/False by PyYAML:
a: Yes
b: y
c: n
d: No
e: on
f: off
Note
Following is the regex from YAML 1.1 specification:
y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF
- As a rule of thumb:
For true/false, when you mean boolean, use True/true/False/false.
For other strings mentioned above or when you mean True/true/False/false as strings, then provide them in quotes.
# as string
a: "y"
# True as boolean
b: True
# True as string
c: "True"