我需要使用python命令执行一组.txt文件(使用robot框架编写的测试脚本)。每个测试脚本都放在一个文件夹中,所有这些子文件夹都放在名为TestFolder的主文件夹下。每个子文件夹下的脚本文件看起来像这样-
Test_Data.txt
Sign_In.txt
Registration.txt
我正在使用一个批处理文件来触发此测试。我的代码如下:-
@echo off
D:
cd .TestFolder
Echo Current dir: "%CD%"
echo.*** Running Test suite in Chrome ***
For /r %%i in (*.txt) do (
set SuitePath=%%i (--- I would like to get full file name)
echo Suite path : !SuitePath!
set SuiteName=%%~ni (-- to get name of file without ext)
echo Suite name : !SuiteName!
CALL pybot --variable Browser:Chrome -d D:SmokeTestResultsTestResults_%date:~10,4%%date:~4,2%%date:~7,2%...
)
当我从命令行执行此操作进行初始测试时,我得到了以下错误:
----
Current dir: D:TestFolder
*** Running Test suite in Chrome ***
Suite path : !SuitePath!
Suite name : !SuiteName!
[ ERROR ] Parsing '!SuitePath!' failed: Data source does not exist.
Try --help for usage information.
Suite path : !SuitePath!
Suite name : !SuiteName!
[ ERROR ] Parsing '!SuitePath!' failed: Data source does not exist.
.... ..... ....... ......
请注意,测试脚本文件夹位于D驱动器中,批处理文件能够正确打印当前目录。。但无法设置套件路径或套件名称
- 如果我需要更改批处理命令,请帮助我。。我需要设置这个套件,以便为日常构建进行持续集成
谢谢。Ishwar
@echo off
setlocal enableextensions disabledelayedexpansion
set "folder=d:TestFolder"
pushd "%folder%" && (
for /r %%i in (*.txt) do (
set "SuitePath=%%~fi"
set "SuiteName=%%~ni"
setlocal enabledelayedexpansion
echo Suite Path = "!SuitePath!"
echo Suite Name = "!SuiteName!"
CALL pybot --variable Browser:Chrome -d D:SmokeTestResultsTestResults_%date:~10,4%%date:~4,2%%date:~7,2%...
endlocal
)
popd
)
要使用延迟扩展,您需要首先启用它。
请注意,当延迟扩展处于活动状态时,文件的名称或路径中是否存在感叹号将成为一个问题,因为批处理解析器将在set
命令中删除或重新解释它们。如果您确信文件的名称/路径中永远不会包含感叹号,则可以在脚本开始时直接启用延迟扩展,并删除用于处理指示问题的内部setlocal enabledelayedexpansion / endlocal
行。
无论如何,如果不需要变量,也就是说,你只需要它的值,而不是存储在变量中的值,不要使用延迟扩展,在使用变量引用的地方直接使用for
可替换参数。