http://www.cnblogs.com/hzhida/archive/2012/08/28/2661033.html
限于作者水平有限,以下内容可能是管窥之见,希望大家高抬贵手,且让我斗胆抛砖引玉。
公司产品迪备主要是通过网页操作来进行数据库的备份与恢复,监控与管理,因此在测试的过程中,可以用python测试脚本来模拟用户的操作,这样的测试对于回归测试效果尤佳,减少了人工操作,极大地提高了效率。
据网上资料得知,python的web测试开源世界,存在splinter,它是自动化测试web的框架,这是最为基本的Web-driver。然后加上selenium,两者并用,才能支持主流的浏览器的firefox, chrome 和IE ,到目前为止,支持chrome浏览器的最为齐全,连鼠标的模拟的API都存在,同时对其余两大浏览器的支持也甚为不错。
有了splinter+selenium,已经可以模拟用户的操作了。但是怎样才能有效地模拟那么多业务的操作,并且能知道业务的执行是成功还是失败呢?这就需要python的单元测试框架了,它能有效地组织这些业务逻辑的测试执行,执行完毕后,显示出各个执行的结果,所谓的业务逻辑可以理解为各个测试用例。
python的单元测试需要自己把测试用例(TestCase)加入到测试集里(testSuite),然后再runTest()进行测试。但我从python2.7.3的单元测试文档,发现更能让测试自动化的接口,那就是discover函数,它能找出指定目录包括其子目录下文件名符合某种样式的测试用例Testcase或测试模块,并且放入到测试集里面自动执行。这里是文档中关于discover函数的描述:
def discover(self, start_dir, pattern='test*.py', top_level_dir=None):
Find and return all test modules from the specified startdirectory, recursing into subdirectories to find them. Only test files that match the pattern will be loaded.
关于discover函数更加详细的用法,请查看文档和阅读其源代码。
因为我们测试产品的时候,都会有层次,分模块,或者整体地去测试,discover接口为我们提供了这样的功能,指定不同的目录,就相当于指定不同的模块进行测试,指定根目录代表要对产品进行整体的测试。
如这是迪备产品测试的雏形树状图:
基本的有了头绪,又有一个问题浮出水面了,那么测试用例的数据又是应该怎样存放的呢?用txt文件,就要定义存取数据的格式,同时规定所有的测试人员都使用这样的格式,这样做会比较牵强。那倒不如用一种人所皆知,并且易学的格式,python对XML格式的支持比较强大,最终决定使用XML文件。使用XML存取测试用例的数据,不但存取方便,并且可以设计测试用例与写相应测试脚本的人是不同的人。
以下是测试迪备产品的一些测试,包含用例的设计,XML测试用例配置文件和测试脚本的分析
Live together,or Die alone!