因此,这是一个从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 -*-
import unittest
import ExecuteExternal
class TestUnittest(unittest.TestCase):
def test(self):
self.assertTrue(ExecuteExternal, "5", "5"==10)
if __name__ == '__main__':
unittest.main()
我确实在论坛上进行过搜索,但找不到答案
答案 0 :(得分:1)
您可以纠缠sys args,但首选方法是将逻辑包装在函数中,然后在脚本中对函数调用进行典型的 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()
答案 1 :(得分:0)
此外,您应该注意脚本的命名约定。参见https://www.python.org/dev/peps/pep-0008/#package-and-module-names
的PEP8