mirror of
https://github.com/FirebirdSQL/firebird-qa.git
synced 2025-01-22 13:33:07 +01:00
160 lines
5.4 KiB
Markdown
160 lines
5.4 KiB
Markdown
|
# pytest plugin for Firebird QA
|
|||
|
|
|||
|
## Installation
|
|||
|
|
|||
|
If you plan to use this plugin for personal purposes (not related to Firebird project QA),
|
|||
|
we recommend to use `pipx` to install `pytest` together with `firebird-qa` plugin:
|
|||
|
|
|||
|
```
|
|||
|
pipx install pytest
|
|||
|
pipx inject pytest firebird-qa
|
|||
|
```
|
|||
|
|
|||
|
## Configuration
|
|||
|
|
|||
|
### Firebird-driver configuration
|
|||
|
|
|||
|
The QA plugin uses firebird-driver to access the Firebird servers, and uses driver configuration
|
|||
|
object to set up various driver and server/database connection parameters. The configuration object
|
|||
|
is initialized from `firebird-driver.conf` file, and plugin specifically utilizes server sections
|
|||
|
in this file. When pytest is invoked, you must specify tested server with `–server <name>` option,
|
|||
|
where `<name>` is name of server configuration section in `firebird-driver.conf` file.
|
|||
|
|
|||
|
This file is stored in firebird-qa repository, and defines default configuration suitable to most QA setups.
|
|||
|
|
|||
|
Note:
|
|||
|
|
|||
|
The `firebird-driver.conf` file should be located in QA root directory. In default setup, the QA plugin
|
|||
|
is used to test local Firebird installation with default user name and password (SYSDBA/masterkey)
|
|||
|
via local server (configuration section).
|
|||
|
|
|||
|
Important:
|
|||
|
|
|||
|
The firebird-driver currently does not support specification of client library in server sections.
|
|||
|
However, the QA plugin works around that limitation. If server section for tested server contains
|
|||
|
`fb_client_library` option specification, it’s copied to global setting.
|
|||
|
|
|||
|
See configuration chapter in [driver documentation](https://firebird-driver.readthedocs.io) for details.
|
|||
|
|
|||
|
### Pytest configuration
|
|||
|
|
|||
|
While it’s not required, it’s recommended to create pytest configuration file in QA root directory.
|
|||
|
You may use this file to simplify your use of pytest with addopts option, or adjust pytest behaviour.
|
|||
|
|
|||
|
Suggested options for `pytest.ini`:
|
|||
|
```
|
|||
|
console_output_style = count
|
|||
|
testpaths = tests
|
|||
|
addopts = --server local --install-terminal
|
|||
|
```
|
|||
|
|
|||
|
## Running test for Firebird
|
|||
|
|
|||
|
To run all tests in suite against local Firebird server, invoke:
|
|||
|
```
|
|||
|
pytest --server local ./tests
|
|||
|
```
|
|||
|
|
|||
|
Tip: If you created `pytest.ini` with recommended values, you can just invoke pytest without additional parameters.
|
|||
|
|
|||
|
### pytest report header
|
|||
|
|
|||
|
When pytest is invoked, a report header is printed on terminal before individual tests are executed.
|
|||
|
The QA plugin extend this header with next information:
|
|||
|
|
|||
|
- Python encodings
|
|||
|
|
|||
|
- system
|
|||
|
- locale
|
|||
|
- filesystem
|
|||
|
|
|||
|
- Information about tested Firebird server
|
|||
|
|
|||
|
- conf. section name
|
|||
|
- version
|
|||
|
- mode
|
|||
|
- architecture
|
|||
|
- home directory
|
|||
|
- tools directory
|
|||
|
- used client library
|
|||
|
|
|||
|
### pytest switches installed by QA plugin
|
|||
|
|
|||
|
The QA plugin installs several pytest command-line switches. When you run pytest ``--help``,
|
|||
|
they are listed in Firebird QA section:
|
|||
|
```
|
|||
|
Firebird QA:
|
|||
|
--server=SERVER Server configuration name
|
|||
|
--bin-dir=PATH Path to directory with Firebird utilities
|
|||
|
--protocol={xnet,inet,inet4,wnet}
|
|||
|
Network protocol used for database attachments
|
|||
|
--runslow Run slow tests
|
|||
|
--save-output Save test std[out|err] output to files
|
|||
|
--skip-deselected={platform,version,any}
|
|||
|
SKIP tests instead deselection
|
|||
|
--extend-xml Extend XML JUnit report with additional information
|
|||
|
--install-terminal Use our own terminal reporter
|
|||
|
```
|
|||
|
|
|||
|
**server:**
|
|||
|
|
|||
|
REQUIRED option. Section name in firebird-driver.conf with connection parameters for tested server.
|
|||
|
|
|||
|
**bin-dir:**
|
|||
|
|
|||
|
Normally, the QA plugin detects and properly sets the directory where Firebird tools are installed.
|
|||
|
However, you can set this directory explicitly using the --bin-dir switch.
|
|||
|
|
|||
|
**protocol:**
|
|||
|
|
|||
|
Override for network protocol specified in firebird-driver.conf file (or default).
|
|||
|
|
|||
|
**runslow:**
|
|||
|
|
|||
|
Tests that run for longer than 10 minutes on equipment used for regular Firebird QA should be
|
|||
|
marked as slow. They are not executed, unless this switch is specified.
|
|||
|
|
|||
|
**save-output:**
|
|||
|
|
|||
|
_Experimental switch_
|
|||
|
|
|||
|
When this switch is specified, stdout/stderr output of external Firebird tool executed by
|
|||
|
test is stored in `/out` subdirectory. Intended for test debugging.
|
|||
|
|
|||
|
**skip-deselected:**
|
|||
|
|
|||
|
Tests that are not applicable to tested server (because they are for specific platform or
|
|||
|
Firebird versions) are deselected during pytest collection phase. It means that they are not
|
|||
|
shown in test session report. This switch changes the routine, so tests are marked to skip
|
|||
|
(with message explaining why) instead deselection, so they show up is session report.
|
|||
|
|
|||
|
**extend-xml:**
|
|||
|
|
|||
|
When this switch is used together with `--junitxml` switch, the produced JUnitXML file will
|
|||
|
contain additional metadata for testsuite and testcase elements recorded as property sub-elements.
|
|||
|
|
|||
|
**Important:**
|
|||
|
|
|||
|
Please note that using this feature will break schema verifications for the latest JUnitXML schema.
|
|||
|
This might be a problem when used with some CI servers.
|
|||
|
|
|||
|
**install-terminal:**
|
|||
|
|
|||
|
This option changes default pytest terminal reporter that displays pytest NODE IDs, to custom
|
|||
|
reporter that displays Firebord QA test IDs.
|
|||
|
|
|||
|
pytest node IDs are of the form `module.py::class::method` or `module.py::function`.
|
|||
|
|
|||
|
Firebord QA test IDs are defined in our test metadata.
|
|||
|
|
|||
|
**Important:**
|
|||
|
|
|||
|
Right now, the custom terminal is opt-in feature. This will be changed in some future release
|
|||
|
to opt-out using new switch.
|
|||
|
|
|||
|
|
|||
|
### Test for use with this plugin
|
|||
|
|
|||
|
Please read the [plugin documentation](https://firebird-qa.rtfd.io) for instructions how
|
|||
|
to create tests that use special support provided by this plugin.
|