51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2621|回复: 2
打印 上一主题 下一主题

[Appium] 生成比较美观的 appium 自动化测试报告,并且包含测试截图

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-6-29 13:24:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近工作中想要做自动化回归测试,想法是将每个测试用例都做自动截图,然后将最近的稳定版本和当前测试的版本的两张截图去对比,也要将两个版本的截图都放到测试报告中方便人工来进行验证。最初想法是通过HTMLTestRunner生成带截图的测试报告,但是HTMLTestRunner本身没有截图功能,还有它不支持python 3,所以另外找了其他的工具来做这件事。
生成测试报告工具简介HtmlTestRunner是将单元测试的结果保存为html格式的测试报告的工具,这个工具的功能和HTMLTestRunner很想,而且名称也很像。但是它支持python3,而且生成的报告的样式更加美观。
安装HtmlTestRunner访问这个url:
https://pypi.python.org/pypi/html-testRunner/1.0.3
然后下载html_testRunner-1.0.3-py2.py3-none-any.whl文件,接下来通过下面命令(适用于ubuntu等linux系统)来安装:
  1. $ sudo pip3 install html_testRunner-1.0.3-py2.py3-none-any.whl<code></code>
复制代码
如果你是windows系统,尝试使用下面命令安装:
  1. $ pip install html_testRunner-1.0.3-py2.py3-none-any.whl<code></code>
复制代码
添加截图功能HtmlTestRunner这个工具,本身没有展示截图的功能,不过可以通过修改它的template文件来添加截图功能。
通过下面地址,下载HtmlTestRunner的源代码到本地:
https://github.com/oldani/HtmlTestRunner
用编辑器打开HtmlTestRunner/template/report_template.html文件,进行修改:


需要删除上图中标红色的代码,并新增绿色的代码。注意将新增图片的目录设置为自己本地的截图保存的目录。
生成自动化测试报告使用python的appium API和unittest单元测试框架,再加上上面提到的HtmlTestRunner第三方模块,可以生成带测试截图的测试报告。具体代码如下:
  1. #!/usr/bin/env python3
  2. # coding=utf-8
  3. from appium import webdriver
  4. from nose.tools import *
  5. import unittest
  6. import HtmlTestRunner #生成HTML格式的测试报告

  7. class take_screen_shot():  #这个类将在下面作为装饰器使用
  8.     def __init__(self, func):
  9.         self.func = func
  10.         self.name = func.__name__ + ' (__main__.CalTestCase).png'  #拼接截图文件名

  11.     def __call__(self, *args):   #对每次调用的函数都做截图操作
  12.         try:
  13.             self.func(self, *args)
  14.         finally:
  15.             driver.get_screenshot_as_file(self.name)

  16. class CalTestCase(unittest.TestCase):

  17.     @classmethod
  18.     def setUpClass(self):
  19.         desired_caps = {}
  20.         desired_caps['platformName'] = 'Android' #设置操作平台
  21.         desired_caps['platformVersion'] = '5.1.1' #操作系统版本
  22.         desired_caps['deviceName'] = 'Nexus 4' #设备名称
  23.         desired_caps['appPackage'] = 'com.android.calculator2'
  24.         desired_caps['appActivity'] = '.Calculator'
  25.         desired_caps['udid'] = '04c5a5af52197902'
  26.         global driver
  27.         driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

  28.     @classmethod
  29.     def tearDownClass(self):
  30.         driver.quit() #退出当前应用

  31.     @take_screen_shot    #对每一条测试用例使用装饰器
  32.     def test_case_01(self):
  33.         text = driver.find_element_by_id('com.android.calculator2:id/formula').text
  34.         assert_equal(text, "")

  35.     @take_screen_shot
  36.     def test_case_02(self):  
  37.         driver.find_element_by_id('com.android.calculator2:id/digit_1').click() #点击数字键1
  38.         driver.find_element_by_id('com.android.calculator2:id/op_add').click() #点击加号
  39.         driver.find_element_by_id('com.android.calculator2:id/digit_1').click() #点击数字键1
  40.         driver.find_element_by_id('com.android.calculator2:id/eq').click() #点击等号
  41.         text = driver.find_element_by_id('com.android.calculator2:id/formula').text
  42.         assert_equal(text, "2")

  43. if __name__ == '__main__':  #下面语句用来生成测试报告
  44.     unittest.main(testRunner=HtmlTestRunner.HTMLTestRunner(output='cal_report',
  45.                                                            report_title='Android计算器测试报告'))
复制代码
代码分析:因为计划每个测试用例都进行截图操作,所以使用了python的装饰器。这样就实现了每个测试用例执行之后不管是成功还是失败都进行截图操作,代码的最后使用HtmlTestRunner工具生成测试报告。
接下来使用下面命令执行测试:
  1. $ python3 appium_deom.py
  2. Running tests...
  3. ----------------------------------------------------------------------
  4. test_case_01 (__main__.CalTestCase) ... OK (1.786675)s
  5. test_case_02 (__main__.CalTestCase) ... OK (5.081634)s
  6. ----------------------------------------------------------------------
  7. Ran 2 tests in 0:00:
  8. OK
  9. Generating HTML reports...
复制代码
生成的测试报告的位置在测试脚本所在的目录下的reports目录下,通过浏览器查看,结果如下:


点击view按钮可以展开查看截图和错误信息:


接下来想要做的现在的测试报告的html模板中的截图还是写死的路径,如果能将截图的路径也能自动生成的话就更好了。
还有现在没有进行两个版本截图的对比,考虑继续寻找工具做截图的对比,并突出或标记上两张图片不相同的地方。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    无聊
    2024-7-12 13:16
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2017-6-29 13:43:41 | 只看该作者
    “HtmlTestRunner是将单元测试的结果保存为html格式的测试报告的工具,这个工具的功能和HTMLTestRunner很像”
    没看懂,只是把html大小写而已。笔误还是?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2017-6-29 13:44:13 | 只看该作者
    HTMLTestRunner 是另一个,这有个例子:http://tungwaiyip.info/software/sample_test_report.html
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-28 07:18 , Processed in 0.070454 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表