代码之家  ›  专栏  ›  技术社区  ›  Kevin Müller

Unittest从另一个脚本传递参数

  •  0
  • Kevin Müller  · 技术社区  · 7 年前

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    import sys
    
    test=int(sys.argv[1])+int(sys.argv[2])
    print(test)
    

    现在我想编写一个Unittest脚本来测试这个脚本,但是我不知道如何在Unittest函数中传递这两个必需的参数。这是我当前的代码:

    #!/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()
    

    我确实在论坛上搜索过,但找不到答案

    2 回复  |  直到 7 年前
        1
  •  1
  •   M.Rau    7 年前

    您可以对sys参数进行争论,但首选的方法是将逻辑包装到函数中,并将典型的 检查脚本中的函数调用。

    您可以在单元测试中导入脚本并调用函数,而不是破坏脚本。

    # -*- 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()