Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Unittest从另一个脚本传递参数_Python_Unit Testing_Arguments - Fatal编程技术网

Python Unittest从另一个脚本传递参数

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 -*

下面是一个非常简单的脚本,我是从一个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()

我确实在论坛中搜索过这里,但没有找到答案。

您可以对系统参数进行争论,但首选的方法是将您的逻辑包装在函数中,并在脚本中的函数调用周围放置典型的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”,第二个参数也是如此