我上一篇文章介绍了我的搭建 appium 手机自动化测试环境(ios)的经验。环境搭建好了就可以编写具体的测试业务脚本了。当脚本编写完成当时候,我们一般会得到多个脚本,而我们要运行一次完整等测试需要将每个脚本都运行一次。如果单独的一个一个的去执行脚本是很不方便的。最好是能通过只运行一个脚本,就将所有业务测试脚本都运行一遍。测试集正好解决了这个问题。
具体的实现方式是,我们通过新建一个测试集并将若干具体的业务测试脚本加入到测试集中。然后通过运行包含该测试集的脚本来运行整个测试,这样我们就可以达到只运行一个脚本来运行整个自动化回归测试的目的。
好,下面就以实际的例子来给读者简单介绍一下具体如何以测试集方式运行整个测试。
1.首先,我们需要编写单独的测试业务脚本,例如模块 1 我们写了一个 test01.py 脚本,脚本中的测试类名称为 Module1_cls;模块 2 我们写了 test02.py 脚本,测试类名称为 Module2_cls;模块 3 写了个 test03.py 脚本,测试类名称为 Module3.cls(具体 appium 的 python 测试脚本的内容格式和编写方法,请自行参考 appium 的官方文档,有中文版)。这样就得到三个单独的业务测试脚本
test01.py
test02.py
test03.py
然后我们新建一个 main.py,最终我们要实现的是通过运行 main.py 脚本来实现 3 个具体测试业务脚本的执行。
请看具体实现代码:
# -*- coding:utf-8 -*-
from selenium import selenium
import unittest, time, re
import HTMLTestRunner
from test01 import Module1_cls
from test02 import Module2_cls
from test03 import Module3_cls
def suit_run():
fp = file("/Users/hobbs/Desktop/ios-auto-test/reports/report01.html","wb")
suit = unittest.TestSuite()
suit.addTests(unittest.defaultTestLoader.loadTestsFromTestCase(Module1_cls))
suit.addTests(unittest.defaultTestLoader.loadTestsFromTestCase(Module2_cls))
suit.addTests(unittest.defaultTestLoader.loadTestsFromTestCase(Module3_cls))
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title="report_of_xxx",description="hobbs report")
runner.run(suit)
suit_run()
如上代码所示,我们需要通过 from ...... import ......语句将相关业务测试脚本中的测试类引入,这里说一下采用代码中的写法需要 test01.py,test02.py,test03.py 脚本与 main.py 脚本在同一个文件夹下或者上述三个脚本所在路径已经添加到 python 搜索路径中,具体到添加方式是在 python 命令行交互模式下通过 sys.path.append('your_path') 语句添加,当然执行这个语句之前别忘了 import sys。跑偏了继续说测试集。。。
上面的代码中 suit_ run() 函数的作用就是新建一个测试报告文件和测试集并运行,代码中通过测试集的 addTest() 函数来添加具体的测试脚本中的各测试类。添加完成后运行该测试集就可以实现一次性连续运行多个业务脚本的目的。
其中 runner.run(suit) 语句就是运行测试集的语句,测试集运行的过程中会不断将测试的结果写入定义的 report01.html 文件中,最后当测试集运行完成后,各个业务测试脚本的执行结果就都写入到 report01.html 文件里了,我们通过查看该文件可以了解本次测试执行的结果。
ps:后面我会向大家介绍一下我的持续集成方面的一些实践经验,找时间整理下,这个算是做个小铺垫吧~