Python Unittest从另一个脚本传递参数
下面是一个非常简单的脚本,我是从一个Web服务运行的:Python Unittest从另一个脚本传递参数,python,unit-testing,arguments,Python,Unit Testing,Arguments,下面是一个非常简单的脚本,我是从一个Web服务运行的: #!/usr/bin/env python3 # -*- coding: utf-8 -*- import sys test=int(sys.argv[1])+int(sys.argv[2]) print(test) 现在我想写一个Unittest脚本来测试这个脚本,但是我不知道如何在Unittest函数中传递2个必需的参数。这是我目前的代码: #!/usr/bin/env python3 # -*- coding: utf-8 -*
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
test=int(sys.argv[1])+int(sys.argv[2])
print(test)
现在我想写一个Unittest脚本来测试这个脚本,但是我不知道如何在Unittest函数中传递2个必需的参数。这是我目前的代码:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import unittest
import ExecuteExternal
class TestUnittest(unittest.TestCase):
def test(self):
self.assertTrue(ExecuteExternal, "5", "5"==10)
if __name__ == '__main__':
unittest.main()
我确实在论坛中搜索过这里,但没有找到答案。您可以对系统参数进行争论,但首选的方法是将您的逻辑包装在函数中,并在脚本中的函数调用周围放置典型的main检查 您可以在单元测试中导入脚本并调用函数,而不是破坏脚本 这是未经测试的脚本版本:
# -*- coding: utf-8 -*-
import sys
def calc(a, b):
return int(a)+int(b)
if __name__ == "__main__":
print(calc(sys.argv[1], sys.argv[2]))
假设脚本名为ExecuteExternal.py,那么测试脚本将:
# -*- coding: utf-8 -*-
import unittest
import ExecuteExternal
class TestUnittest(unittest.TestCase):
def test(self):
result = ExecuteExternal.calc("5", "6")
self.assertTrue(result, 11)
if __name__ == '__main__':
unittest.main()
此外,您应该注意脚本的命名约定。请参见PEP8 at我的主要问题是,我的Web服务使用一些参数调用脚本,如果我在脚本中包含unittest,它的Elve unittest会给我两个错误,如:模块“main”没有属性:“argument1”,第二个参数也是如此