Appium 新手学 appium-HTMLTestRunner 测试报告的导出 demo

· 2015年05月19日 · 最后由 qinghuan222 回复于 2020年06月19日 · 2506 次阅读
#你也想跟webdriver一样搞出逼格高的测试报告么,appium一样也可以~不说废话了,请看,仔细学习~
#coding=utf-8

import os
import unittest,sys,time,re,datetime,HTMLTestRunner
from appium import webdriver
from time import sleep
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

# Returns abs path relative to this file and not cwd
PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)

class ContactsAndroidTests(unittest.TestCase):
    def setUp(self):
        desired_caps = {}
        desired_caps['platformName'] = 'Android'
        desired_caps['platformVersion'] = '4.3'
        desired_caps['deviceName'] = '192.168.56.101:5555'
        '''desired_caps['app'] = PATH(
            '../../../sample-code/apps/ContactManager/ContactManager.apk'
        )'''
        desired_caps['appPackage'] = 'com.android.calculator2'
        desired_caps['appActivity'] = '.Calculator'

        self.driver = webdriver.Remote('http://192.168.10.95:4723/wd/hub', desired_caps)

    def tearDown(self):
        self.driver.close_app()
        self.driver.quit()

    def test_add_contacts(self):
        self.driver.find_element_by_id('com.android.calculator2:id/digit9').click()



if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(ContactsAndroidTests("test_add_contacts"))
    #suite.addTest(IposCase("testmaters"))
    timestr = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
    filename = "D:\\appium\\appiumresult\\result_" + timestr + ".html"
    print (filename)
    fp = open(filename, 'wb')
    runner = HTMLTestRunner.HTMLTestRunner(
                stream=fp,
                title='测试结果',
                description='测试报告'
                )
    #suite = unittest.TestLoader().loadTestsFromTestCase(ContactsAndroidTests)
    #unittest.TextTestRunner(verbosity=2).run(suite)
    runner.run(suite)
    #g_browser.quit()
    fp.close() #测试报告关闭

最后来看看我们的成果吧~去找到我们存放测试报告的路径~
注:最重要的是下载 HTMLTestRunner.py,放到 python 的 Lib 下

近期,我会梳理一份彩笔自学 appium 的文章出来,我是从零开始自学的,现在带公司的无线测试这个团队,希望能帮到更多的自学者~

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 18 条回复 时间 点赞

楼主是 90 后啊,年轻~~

py 有现成的生成 html 的框架真好,java 只能羡慕嫉妒恨

#3 · 2015年05月20日 Author

#2 楼 @zwq0216 java 也有 testng,junit 的测试报告的

#4 · 2015年05月20日 Author

#1 楼 @lucasluo 多谢多谢,近期我会抽时间弄个合集的

近期,我会梳理一份彩笔自学 appium 的文章出来,我是从零开始自学的,现在带公司的无线测试这个团队,希望能帮到更多的自学者
期待楼主的精品

@mads 没有像 py 直接生成 html 样式报告的

#7 · 2015年05月21日 Author

#6 楼 @zwq0216 ?我暂时只用 py。。。

加入如下两个帖子就更完美了
完美解决 HTMLTestRunner 错误日志显示出界问题

http://blog.163.com/yang_jianli/blog/static/16199000620154835251975/

解决 HTMLTestRunner 中文显示乱码的问题
http://m.blog.csdn.net/blog/yunbin_7/40083983

#9 · 2015年05月29日 Author

#8 楼 @xdlhy 别人的东西,不能直接拿来用啊。。我的帖子都是原创的。。

@mads 嗯,我放到回复里,谁看到就用吧,基本就没问题了

#11 · 2015年05月29日 Author

#10 楼 @xdlhy
http://m.blog.csdn.net/blog/yunbin_7/40083983
这个帖子的这个代码在 python3.x 里不能运行成功的。因为我是从 2.7 转到 3.x 的,所以尝试过,会报错。所以你这个网址的解决方案估计只能是 2.x 版本的 python

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

@mads import 这几句我也没加,我直接就是 # -- coding:utf-8 -- ,然后在 HTMLTestRunner.py 把这两句 uo = o.decode('utf-8'),ue = e.decode('utf-8')
就可以了 不过我确实是 2.7 的,3.X 没用过

#13 · 2015年05月29日 Author

#12 楼 @xdlhy 你这是转码,reload(sys) 在 3.x 会报错的。只能 2.7 或者其他 2.x 版本

已收藏!谢谢

如果跑多个用例并生成测试报告,当其中一个用例执行失败后,其他用例就不会执行了,请问@mads是怎么解决该问题的?

感谢楼主

我在用这个 HTMLTestRunner 时候提示
..
Traceback (most recent call last):
File "E:\Python\demo.py", line 338, in
runner.run(suiteTest)
File "E:\Python\lib\HTMLTestRunner.py", line 630, in run
self.generateReport(test, result)
File "E:\Python\lib\HTMLTestRunner.py", line 677, in generateReport
report = self._generate_report(result)
File "E:\Python\lib\HTMLTestRunner.py", line 741, in _generate_report
self._generate_report_test(rows, cid, tid, n, t, o, e)
File "E:\Python\lib\HTMLTestRunner.py", line 757, in _generate_report_test
name = t.id().split('.')[-1]
TypeError: id() takes exactly 2 arguments (1 given)
求助大神们🙏

仅楼主可见
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册