【发布时间】:2019-10-05 21:43:10
【问题描述】:
语言:python - 3.7.3 机器人框架 - 3.1.1 熟练度:新手
我想从命令提示符将参数传递给 python 文件变量,然后想通过将 python 文件添加为变量来从机器人文件中打印相同的参数。
cmd (Variables) --> python file --> robot (print those variables)
但显然这些尝试都没有产生预期的结果。任何指导将不胜感激。
注意:Robot 和 Python 文件在 pycharm IDE 的同一目录下。
命令行:-
1st try: robot -d Report -V test.py Test_sample.robot|py test.py test@test.com test@123 QA1
2nd try: robot -d Report Test_sample.robot|py test.py test@test.com test@123 QA1
3rd try: robot -d Report --Variablefile py test.py Test_sample.robot|py test.py test@test.com test@123 QA1
4th try: robot -d Report -V | py test.py test@test.com test@123 QA1| Test_sample.robot
Python:-
import sys
username = str(sys.argv[1])
password = str(sys.argv[2])
environment = str(sys.argv[3])
机器人:-
*** Settings ***
Library SeleniumLibrary
Library Collections
Variables test.py
*** Test Cases ***
Pass variables from Python File
log to console The usr is: "${username}"
log to console The pwd is: "${password}"
log to console The env is: "${environment}"
预期:
用户名是:test@test.com 密码是:test@123 环境是:QA1
实际:
[ ERROR ] Unexpected error: OSError: [Errno 22] Invalid argument
Traceback (most recent call last):
File "<<Dir path>>\python\python37-32\lib\site-packages\robot\utils\application.py", line 83, in _execute
rc = self.main(arguments, **options)
File "<<Dir path>>\python\python37-32\lib\site-packages\robot\run.py", line 439, in main
result = suite.run(settings)
File "<<Dir path>>\python\python37-32\lib\site-packages\robot\running\model.py", line 222, in run
self.visit(runner)
File "<<Dir path>>\python\python37-32\lib\site-packages\robot\model\testsuite.py", line 168, in visit
visitor.visit_suite(self)
File "<<Dir path>>\python\python37-32\lib\site-packages\robot\model\visitor.py", line 84, in visit_suite
if self.start_suite(suite) is not False:
File "<<Dir path>>\python\python37-32\lib\site-packages\robot\running\runner.py", line 83, in start_suite
test_count=suite.test_count))
File "<<Dir path>>\python\python37-32\lib\site-packages\robot\output\output.py", line 51, in start_suite
LOGGER.start_suite(suite)
File "<<Dir path>>\python\python37-32\lib\site-packages\robot\output\logger.py", line 200, in start_suite
logger.start_suite(suite)
File "<<Dir path>>\python\python37-32\lib\site-packages\robot\output\console\verbose.py", line 35, in start_suite
self._writer.suite_separator()
File "<<Dir path>>\python\python37-32\lib\site-packages\robot\output\console\verbose.py", line 104, in suite_separator
self._fill('=')
File "<<Dir path>>\python\python37-32\lib\site-packages\robot\output\console\verbose.py", line 110, in _fill
self._stdout.write('%s\n' % (char * self._width))
File "<<Dir path>>\python\python37-32\lib\site-packages\robot\output\console\highlighting.py", line 53, in write
self.flush()
File "<<Dir path>>\python\python37-32\lib\site-packages\robot\output\console\highlighting.py", line 66, in flush
self.stream.flush()
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='cp1252'>
OSError: [Errno 22] Invalid argument
【问题讨论】:
-
你知道robot 有一种机制可以通过--variable 选项从命令行设置变量吗?您无需从
sys.argv获取信息。 -
@BryanOakley:是的,我尝试使用 -v(变量)和 -V(变量文件)。如果我单独运行 python 文件,我可以打印变量,但只有当我尝试从机器人文件中打印相同的变量时,问题才会开始,就像我上面描述的那样。
-
目前还不清楚您要解决什么问题。您可以使用 --variable 从命令行设置变量。您实际上是在问如何从 python 库中打印机器人值的值吗?或者您是否想找出适用于机器人和不使用机器人的东西?
-
@BryanOakley:对不起,如果我的描述不够清楚。我的目标是从命令行传递凭据。这样,其他同事就可以使用他们自己的凭据运行我的自动化脚本。因此,对于操作,我决定最初从命令行获取凭据,将其存储在 python 中并将其传递给机器人文件以进行进一步操作。现在,一旦执行完成,python 似乎会清除变量。 CMD LINE>>robot -d Report test_sample.robot && py Methods.py Prasad Rajassekaran 33 ;;;结果:: 查询是: select * from table where username=-d and password=Report
标签: python python-3.x robotframework command-line-arguments