[英]How do I insert a command argument into a string?
我试图弄清楚如何将命令行参数发送到字符串中,并且我一直收到错误。
这是我的python代码和命令参数
import sys
class LoginTest(unittest.TestCase):
def setUp(self):
buildURL = sys.argv[1]
self.driver = webdriver.Chrome()
self.driver.get("https://" + buildURL + "test.com")
这是我发送的命令行参数。
python test.py build190
最后我不断得到的错误。
AttributeError: 'module' object has no attribute 'build190'
我收到的完整错误消息
Traceback (most recent call last):
File "Test.py", line 60, in <module>
unittest.main()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.py", line 94, in __init__
self.parseArgs(argv)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.py", line 149, in parseArgs
self.createTests()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.py", line 158, in createTests
self.module)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/loader.py", line 130, in loadTestsFromNames
suites = [self.loadTestsFromName(name, module) for name in names]
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/loader.py", line 100, in loadTestsFromName
parent, obj = obj, getattr(obj, part)
AttributeError: 'module' object has no attribute 'build190'
您正在尝试运行unittest以及它如何加载会干扰您将参数传递给脚本的意图。
在我们进一步研究之前,单元测试应该作为独立运行,并且将参数传递给它们不是最佳实践。 在这里,您可以阅读不这样做的原因。
无论如何,试试这个片段。 它应该工作。
import sys
import unittest
class LoginTest(unittest.TestCase):
buildURL = ""
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.get("https://" + buildURL + "test.com")
if __name__ == "__main__":
LoginTest.buildURL = sys.argv[1]
unittest.main()
如果您决定使用此路径(将参数传递给单元测试),则应添加一些检查是否存在任何参数,以及是否要使用未设置的buildURL
运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.