我们在Python中运行单元测试,这些单元测试之前已经用诸如我们希望在哪个服务器上运行测试之类的信息进行了硬编码。相反,我希望通过命令行参数将该信息传递给测试。问题在于,使用Python单元测试框架时,我无法将自定义参数作为单个参数调用,然后utrunner.py会捕获该参数,它假定该参数与要运行的测试有关(关于测试发现)
因此,从IDEA开始,我发出以下命令来启动测试套件:
C:\Users\glenp\AppData\Local\Programs\Python\Python36-32\python.exe C:\Users\glenp\.IntelliJIdea2016.3\config\plugins\python\helpers\pycharm\utrunner.py C:\Root\svn\trunk\src\test\python\test.py "server=deathStar language=klingon" true
这是从print(sys.argv)
读回给我的参数:
['C:\\Users\\glenp\\.IntelliJIdea2016.3\\config\\plugins\\python\\helpers\\pycharm\\utrunner.py', 'C:\\Root\\svn\\trunk\\src\\test\\python\\schedulePollTest.py', 'server=deathStar language=klingon', 'true']
注意,我实际上并没有调用我自己的测试,而是调用utrunner.py,将我的测试作为它的参数之一
我得到一个FileNotFound错误:FileNotFoundError: [Errno 2] No such file or directory: 'server=deathStar language=klingon'
,它在我运行测试之前终止了测试
我想我需要修改以下任一项:
if __name__ == "__main__":
unittest.main()
或者这个:
class testThatWontRun(unittest.TestCase):
我可以修改imp.py,这会抛出错误,但我恰好是团队中的一员,修改Python核心功能根本无法很好地扩展(团队中的每个人都会感到悲伤)
那么,有没有一种方法可以让utrunner.py(和imp.py)忽略这些参数来表达我的参数呢
是的,有一种方法可以让utrunner.py忽略参数:在希望它忽略的参数前面加一个
所以服务器=死亡之星变成了服务器=死亡之星
谢谢你,小鸭子:)
相关问题 更多 >
编程相关推荐