我目前正在使用这个库在python中开发一个库和一组程序。单元测试要求我从库中导入每个模块,并测试其中的类和例程。这没问题。我有一个单独的测试目录,包含所有的测试和导入库模块,我在开发过程中运行了这些模块。
然而,当涉及到测试程序时,情况会发生变化。要进行测试,程序必须作为一个整体运行。程序假设找到已安装的库(如果我在我的机器上安装了以前版本的库,这实际上可能是错误的,这会增加更多的麻烦)。目前,我的程序是由一个带有PYTHONPATH定义的测试套件运行的,我在部署之前手动执行这个定义(IOW,我不执行安装),但我认为我做得不对。我觉得一般来说,当程序完全部署时,应该测试它的功能,但这意味着每次我想执行功能测试时都必须安装它。
你对整个程序的功能测试有什么经验和建议?你是在部署之前还是之后做这件事,怎么做?
谢谢
请注意,我没有故意包含python标记。虽然我的问题是特定于python的,而且我更喜欢python相关的答案,但我认为也可以从其他语言的专家那里得到贡献。
编辑:正如在评论中所报告的,事实上,我的程序在安装时必须导入只有在部署时才能找到路径的模块(我下载并动态安装依赖项,它们没有安装在我的计算机上)。我不能从测试中操作sys.path,因为这意味着我要从另一个程序(运行并生成一个system()调用的测试套件)修改程序的sys.path (我的可执行文件)。
换句话说,在没有部署的情况下测试程序的唯一方法是执行将PYTHONPATH设置为包含dep的dir的程序,以及由make脚本安装的程序使用的库(正如我所说,后者下载、编译和“安装”临时目录中的所有内容)。
在部署时,dep和可执行文件一起打包在一个"OSX“-like结构中,它是完全可执行和可重定位的。
编辑
增加了150个赏金,看看我能不能得到更多的反馈。
编辑
我感谢所有的答案,并投票选出了所有的答案。这个选择对我来说是一个艰难的选择,但我被LudoMC回忆起了我很久以前研究过的V模型测试方法。感谢大家给出了很好的答案。
发布于 2009-04-27 12:12:48
尽可能多地在理性的范围内进行测试。如果有些东西是很好的测试,但这是很大的努力,那就不要测试它.目前还没有。只有当你发现你在那个地方一次又一次地遇到问题的时候,再花点力气。永远不要事先假定问题会发生在哪里(除非你提前知道.但是,知道并不是假设!)
因此,如果安装程序很少引起任何问题,不要尝试测试它。如果您的部署很脆弱,可以编写一个测试来检查安装存档是否完成,而不是试图安装:您不是在测试系统的安装程序,而是在测试您的包。
https://stackoverflow.com/questions/793046
复制相似问题