带有测试生成参数的Python -m unittest

我设置了一个CI测试服务器,我们称之为python -m teamcity.unittestpy file.py。然后,此file.py加载一个JSON文件并生成大量可以从该JSON文件完全自定义的测试。该系统完全按预期运行,并已在最近2周内进行了测试。

现在,我们已经决定更改CI流程,不再对要测试的软件包(内置软件)做出假设,因此,测试生成现在应适用于我想称为{{1 }}指定要构建的软件包以及允许生成的测试。

我知道不使用python -m teamcity.unittestpy file.py -package packagename是很常见的,然后证明-m unittest discover是实现此行为的易于使用的模块。但是,我对测试套件的argparse调用感到困惑。

这是我当前的状态:

-m teamcity.unittestpy

现在,请记住,我的实际测试工作正常。我的实际问题是,由于#general imports stuff #new argparse imports import sys import argparse parser = argparse.ArgumentParser() parser.add_argument('-package') #package argument. -p foo would generate the 'foo' tests defined in 'foo' folder class CriticalSessionTests(unittest.TestCase): pass def test_generator(): def test(self): #testdefinition self.assertTrue(True) return test def init(options,args): PACKAGE = options.p #can be None which would mean NO TESTS if PACKAGE is not None: cwdpath = os.getcwd() path = cwdpath + '\\' + PACKAGE #load json file #iterate over files in package folder and generate additional tests #generate tests like: test_name = "test_TC_{}_{}".format(filename,idx) test = test_generator() setattr(CriticalSessionTests,test_name,test) options,args = parser.parse_known_args() init(options,args) if __name__ == '__main__': if is_running_under_teamcity(): runner = TeamcityTestRunner() else: runner = unittest.TextTestRunner() unittest.main(testRunner=runner,argv=sys.argv[:1] + args) 调用的限制,我无法将参数传递给该系统,并且需要解决它。

我非常感谢指向代码片段的指针,这些指针介绍了如何构造被调用的包装程序,以便可以定义参数。或任何其他指针是非常欢迎的。

编辑: 如果人们想知道错误:

-m teamcity.unittestpy

,如果我在Python文件中将其定义为python -m unittest tests.py -package a usage: python.exe -m unittest [-h] [-v] [-q] [--locals] [-f] [-c] [-b] [-k TESTNAMEPATTERNS] [tests [tests ...]] python.exe -m unittest: error: unrecognized arguments: -package a (请注意没有'-'),则会发生以下错误:

package
arkam0803 回答:带有测试生成参数的Python -m unittest

虽然这绝对不是理想的解决方案,但我可以访问环境变量并在测试生成中从中读取它们以正确处理状态。 TeamCity中的构建代理可以定义这些,并且对我的用例适用。

本文链接:https://www.f2er.com/3066654.html

大家都在问