Python,单元测试 - 将命令行参数传递给 unittest.TestCase 的 setUp

标签 python unit-testing

我有一个脚本,它充当使用 Python unittest 模块编写的某些单元测试的包装器。除了清理一些文件、创建输出流和生成一些代码之外,它还使用

将测试用例加载到套件中
unittest.TestLoader().loadTestsFromTestCase()

我已经在使用 optparse 来提取几个命令行参数,用于确定输出位置、是否重新生成代码以及是否进行一些清理。我还想传递一个配置变量,即端点 URI,以在测试用例中使用。

我意识到我可以将 OptionParser 添加到 TestCase 的 setUp 方法,但我想将选项传递给 setUp。这可以使用 loadTestsFromTestCase() 吗?我可以遍历返回的 TestSuiteTestCases,但是我可以手动调用 TestCases 上的 setUp 吗?

** 编辑 ** 我想指出,如果我迭代测试并手动调用 setUp,我可以将参数传递给 setUp:

(options, args) = op.parse_args()
suite = unittest.TestLoader().loadTestsFromTestCase(MyTests.TestSOAPFunctions)
for test in suite:
    test.setUp(options.soap_uri)

但是,我为此使用 xmlrunner,它的 run 方法将 TestSuite 作为参数。我假设它会运行 setUp 方法本身,所以我需要 XMLTestRunner 中可用的参数。

最佳答案

好吧,我也想做同样的事情,我自己也想问这个问题。我想改进以下代码,因为它有重复。它确实让我可以发送参数来测试 TestCase:

import unittest
import helpspot

class TestHelpSpot(unittest.TestCase):
    "A few simple tests for HelpSpot"

    def __init__(self, testname, path, user, pword):
        super(TestHelpSpot, self).__init__(testname)
        self.hs = helpspot.HelpSpot(path, user, pword)

    def test_version(self):
        a = self.hs.version()
        b = self.hs.private_version()
        self.assertEqual(a, b)

    def test_get_with_param(self):
        a = self.hs.filter_get(xFilter=1)

    def test_unknown_method(self):
        self.assertRaises(helpspot.HelpSpotError, self.hs.private_wuggienorple)

if __name__ == '__main__':
    import sys
    user = sys.argv[1]
    pword = sys.argv[2]
    path = sys.argv[3]

    test_loader = unittest.TestLoader()
    test_names = test_loader.getTestCaseNames(TestHelpSpot)

    suite = unittest.TestSuite()
    for test_name in test_names:
        suite.addTest(TestHelpSpot(test_name, path, user, pword))

    result = unittest.TextTestRunner().run(suite)
    sys.exit(not result.wasSuccessful())

关于Python,单元测试 - 将命令行参数传递给 unittest.TestCase 的 setUp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1842168/

相关文章:

python - matplotlib 中轴的刻度格式

angular - Jasmine 单元测试可观察订阅不触发

java - 如何使用 junit 测试阻塞方法

c# - 使用 FakeItEasy 断言没有使用任何通用参数进行调用

python - 使用 Zipfile 和 Python 获取正确的目录结构

python - 在WingIDE中,当 "Always Report"被激活时,如何忽略特定位置的异常?

python - 如何停止致命的Python错误: PyEval_SaveThread: NULL tstate

python - 如何识别数据框中的名义列?

sql - 有人在单元测试 SQL 存储过程方面取得过成功吗?

android - 加载 JNI 库的应用程序对象上的 Robolectric 坦克。我可以获得解决方法吗?