我设置了一个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