9 script
script目录创建时选择“Python Package”格式。测试引擎脚本存放路径,如测试执行时驱动所有测试业务、测试用例的脚本文件module.py。
module.py包含测试集读取函数read_testsuite、获取驱动函数get_driver、测试用例读取函数read_testcase、测试执行函数exec_script。
(1)read_testsuite
read_testsuite函数负责解析测试场景文件。os.path.abspath方法获取当前脚本的执行路径,以便于data目录中的testsuite.xlsx测试场景文件。通过引用os.path方式,增强了脚本的可移植性。
测试脚本代码用for irow in range(2, ws.max_row + 1)循环迭代读取测试场景文件testsuite.xlsx中的每一行记录,通过传入的测试场景名称,先判断是否存在需测试的场景名称,如果有则再用if testoperation=='do'判断是否要获取第三项中保存的场景文件名。
这里关键字do代表的是执行,第二列的关键字可以根据将来的需要进一步拓展,设计更多的关键字。
read_testsuite代码如下:
(2)get_driver
根据测试场景文件确定调用何种浏览器,并启动浏览器。
(3)exec_script
exec_script(testpage,teststep,testaction,testdata)功能是接受testpage,teststep,testdata三个参数,分别代表主页类(对象),页面元素,页面数据。
代码首先判断主页类(testpage)属于那个类,这些类是已经实现的page object类。testpage类中有一个是浏览器类,是Webdriver实现的。脚本分别实现了三个类的testpage判断,分别是浏览器、登陆页面类、主页页面类三个类。
1)浏览器
按照teststep判断浏览器类型,根据参数设置,生成firefox、IE及chrome的对象实例,最后请求testdata变量保存的网页链接。
2)登陆页面类
执行teststep用户名或密码等动作,来执行页面对象的操作,操作数据用传入的testdata。
3)主页页面类
执行退出ECShop动作、查找页面元素等涉及主页面中相关元素的操作。
exec_script代码如下:
(4)read_testcase
read_testcase(testcasefile)是解析testcase文件如login.xlsx,userregister.xlsx等,参数是测试用例文件路径。
for irow in range(2, ws.max_row + 1)是从第二行开始遍历,ws.max是获得测试用例文件有测试脚本指令的行数,参数从2开始,是因为第一行是标题,第二行开始才是正式脚本。
Testpage,teststep,testdata分别保存了测试用例文件(userregister.xlsx,login.xlsx)中的page,step,data数据,它们代表了页面类,元素对象,元素数据。然后作为参数传给exec_script函数。
read_testcase代码如下:
上述代码并未包括模块引入部分的代码,完整module.py代码请联系汇智妹领取。
10 tools
tools目录创建时选择“Directory”格式。存放浏览器驱动文件,一般可将firefox、ie及chrome的驱动文件放在此处,路径与common目录的浏览器启动函数browserlauncher所定义的路径相同。
通过绝对路径调用驱动文件的代码如下:
对于firefox及chrome浏览器可采用类似的方式处理,但是直接引用绝对路径的方法笔者感觉不稳定,建议最好的方法是将所需的浏览器驱动文件放在python的根目录下,即根据《附录五Selenium开发环境配置手册》的方法操作。
11 run.py
集成Pyton语言unittest方法,从而便于测试场景的管理,run.py是ECShop工程脚本执行的入口。
此处将用户注册、用户登陆测试场景统一设置在test_Ecshop函数中并调用执行,根据函数的返回值,判断测试场景执行的成功与否,然后通过HTMLTestRunner方法,将测试结果以HTML格式输出。
通过上述步骤,ECShop自动化测试框架设计并开发完成。