Observed behaviour
When including a config containing a scenario that uses a variable in a request url that is defined in the included config itself, the url gets an extra "http:/" prefix that is not defined anywhere.
There are two .yml files, main.yml and module-with-variables.yml. main.yml includes module-with-variables.yml via included-configs. module-with-variables.yml defines a scenario that uses a variable in the request url like url: ${url}/login. The variable is defined in module-with-variables.yml as well. When running the test, the variable is not resolved and the list of requests contains | ${url}/login | FAIL | 0.00% | 0.000 | Non HTTP response message: Illegal character in path at index 7: http:/${url}/login
Defining the variable in main.yml fixes this issue, but since the variable is not used anywhere else outside of the included config, I'd like to keep it in the included config itself. The use-case I'm trying to implement is extracting the login to my system under test into a separate .yml file in order to reuse it for multiple scenarios.
Expected behaviour
Variables in included configs that are defined in the included config itself should be replaced as usual. The way I read the documentation on included-configs (https://gettaurus.org/docs/ConfigSyntax/#Included-Configs) it sounds like the included configs should be merged into the file including them and after that be processed as usual. So the variables should work as if they were defined in a single file.
Steps to reproduce
- create the following two files:
main.yml:
---
execution:
- concurrency: 1
scenario: main
included-configs:
- module-with-variables.yml
scenarios:
main:
requests:
- include-scenario: module-with-variables
- https://localhost/doSomething
module-with-variables.yml:
---
scenarios:
module-with-variables:
variables:
url: https://localhost
requests:
- ${url}/login
- run
bzt ./main.yml
- observe that the first url that is called is
http:/${url}/login, so the ${url} variable is not replaced and an extra http:/ appears.
Affected Taurus version
[2024-10-11 12:21:25,551 INFO root] Taurus CLI Tool v1.16.34
[2024-10-11 12:21:25,552 DEBUG root] Build: 14646 Thu Aug 15 11:34:03 UTC 2024
[2024-10-11 12:21:25,552 DEBUG root] Extended git info: 7e511f08 Release 1.16.34 Changelog
[2024-10-11 12:21:25,552 DEBUG root] Command-line options: {'log': 'C:\\Users\\MARTIN~1\\AppData\\Local\\Temp\\bzt_o7grmv1p.log', 'option': None, 'quiet': None, 'verbose': None, 'no_system_configs': None, 'aliases': []}
[2024-10-11 12:21:25,552 DEBUG root] Python: CPython 3.12.4
[2024-10-11 12:21:25,552 DEBUG root] OS: uname_result(system='Windows', node='<redacted>', release='10', version='10.0.19045', machine='AMD64')
[2024-10-11 12:21:25,553 DEBUG root] Path to interpreter: C:\Users\MartinHanysz\AppData\Local\Programs\Python\Python312\python.exe
[2024-10-11 12:21:25,553 DEBUG root] Path to packages: ['C:\\Users\\MartinHanysz\\AppData\\Local\\Programs\\Python\\Python312\\Scripts\\bzt.exe', 'C:\\Users\\MartinHanysz\\AppData\\Local\\Programs\\Python\\Python312\\python312.zip', 'C:\\Users\\MartinHanysz\\AppData\\Local\\Programs\\Python\\Python312\\DLLs', 'C:\\Users\\MartinHanysz\\AppData\\Local\\Programs\\Python\\Python312\\Lib', 'C:\\Users\\MartinHanysz\\AppData\\Local\\Programs\\Python\\Python312', 'C:\\Users\\MartinHanysz\\AppData\\Roaming\\Python\\Python312\\site-packages', 'C:\\Users\\MartinHanysz\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages', 'C:\\Users\\MartinHanysz\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\setuptools\\_vendor']
[2024-10-11 12:21:25,561 DEBUG root] Default python: C:\Users\MartinHanysz\AppData\Local\Programs\Python\Python312\python.EXE
[2024-10-11 12:21:25,568 DEBUG root] Default python3: C:\Users\MartinHanysz\AppData\Local\Microsoft\WindowsApps\python3.EXE
[2024-10-11 12:21:25,568 DEBUG root] Using personal config: C:\Users\MartinHanysz\.bzt-rc
.bzt-rc only contains commented out settings.
Observed behaviour
When including a config containing a scenario that uses a variable in a request url that is defined in the included config itself, the url gets an extra "http:/" prefix that is not defined anywhere.
There are two .yml files,
main.ymlandmodule-with-variables.yml.main.ymlincludesmodule-with-variables.ymlviaincluded-configs.module-with-variables.ymldefines a scenario that uses a variable in the request url likeurl: ${url}/login. The variable is defined inmodule-with-variables.ymlas well. When running the test, the variable is not resolved and the list of requests contains| ${url}/login | FAIL | 0.00% | 0.000 | Non HTTP response message: Illegal character in path at index 7: http:/${url}/loginDefining the variable in
main.ymlfixes this issue, but since the variable is not used anywhere else outside of the included config, I'd like to keep it in the included config itself. The use-case I'm trying to implement is extracting the login to my system under test into a separate .yml file in order to reuse it for multiple scenarios.Expected behaviour
Variables in included configs that are defined in the included config itself should be replaced as usual. The way I read the documentation on
included-configs(https://gettaurus.org/docs/ConfigSyntax/#Included-Configs) it sounds like the included configs should be merged into the file including them and after that be processed as usual. So the variables should work as if they were defined in a single file.Steps to reproduce
main.yml:module-with-variables.yml:bzt ./main.ymlhttp:/${url}/login, so the${url}variable is not replaced and an extrahttp:/appears.Affected Taurus version
.bzt-rconly contains commented out settings.