Appium [已解决 20170214] appium+python+HTMLTestRunner 生成的测试报告内容为空

zujie · 2017年02月13日 · 最后由 zujie 回复于 2017年02月14日 · 2952 次阅读

环境

  • appium1.5.3
  • python3.5
  • iOS9.3
  • iPhone6s
  • 编译器 Sublime Text 3

场景

HTTPTestRunner.py 文件

链接:http://tungwaiyip.info/software/HTMLTestRunner.html
因为是 2.7 版本的,我的 python 环境是 3.5,在网上查资料做了如下修改

  • 第 94 行 将 import StringIO 修改成 import io
  • 第 539 行 将 self.outputBuffer = StringIO.StringIO() 修改成 self.outputBuffer= io.StringIO()
  • 第 631 行 将 print >> sys.stderr, '\nTime Elapsed: %s' %(self.stopTime-self.startTime) 修改成 print(sys.stderr, '\nTimeElapsed: %s' % (self.stopTime-self.startTime))
  • 第 642 行 将 if not rmap.has_key(cls):修改成 if not cls in rmap:
  • 第 766 行 将 uo = o.decode('latin-1') 修改成 uo = e
  • 第 772 行 将 ue = e.decode('latin-1') 修改成 ue = e
  • 第 778 行 将 output = saxutils.escape(uo+ue),修改成 output = saxutils.escape(str(uo)+str(ue))
代码如下:
# !/usr/bin/env python3
# -*- coding:utf-8 -*-

import unittest
import os
from random import randint
from appium import webdriver
from time import sleep
import HTMLTestRunner
import time

class AimeiiOSTests(unittest.TestCase):
    def setUp(self):
        # set up appium
        app = os.path.abspath('/Users/XXX/Library/Developer/Xcode/DerivedData/AIMEI-ayfhazejcwlpjnfdiwhdoozhqxlg/Build/Products/Debug-iphonesimulator/AIMEI.app')
        self.driver = webdriver.Remote(
            command_executor = 'http://127.0.0.1:4723/wd/hub',
            desired_capabilities = {
                'app':app,
                'platformName':'iOS',
                'platformVersion':'9.3',
                'deviceName':'iPhone 6s'
            })

    def tearDowm(self):
        self.driver.quit()

    # 使用tap通过坐标来点击
    def test_click(self):
        self.driver.tap([(150, 620)])
        self.driver.tap([(50, 620)])
        self.driver.tap([(350, 620)])
        self.driver.tap([(7, 35)])
if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(AimeiiOSTests)
    timestr = time.strftime('%Y-%m-%d %X', time.localtime(time.time()))
    filename = '/Users/XXX/Desktop/TestResult/' + timestr + '.html'
    fp = open(filename, "wb")
    runner = HTMLTestRunner.HTMLTestRunner(
        stream = fp, 
        title = u"TestReport", 
        description = u"Result"
    )
    unittest.TextTestRunner(verbosity = 2).run(suite)
    fp.close()

问题描述

代码运行正常,没有报错,测试用例也实现了,但是生成的.html 文件内容为空,请教一下各位以上哪里出错了?

共收到 6 条回复 时间 点赞

需要加 runner.run(suite)

runner = HTMLTestRunner.HTMLTestRunner(
        stream = fp, 
        title = u"TestReport", 
        description = u"Result"
    ).run(suite)

http://pan.baidu.com/s/1dEZQ0pz 这位哥们已经做过了的

#1 楼 @xiaoj 在 runner 后面加了.run(suite) 后报错了

后来把 unittest.TextTestRunner(verbosity = 2).run(suite) 注释掉之后如下,不知道这样算不算运行成功,因为以前运行完了会显示......test OK

7楼 已删除

#2 楼 @westwind 我根据你提供的文件替换掉原来的,结果出现了新的错误😂

@xiguamaomaoqiu 没有问题的,都能执行用例 runner.run(suite) 就可以了
1.unittest.TextTestRunner(verbosity = 2).run(suite) 实际上又执行了一遍用例但是会有冲突 (如果想看的话,这行替换成 unittest.main())

#6 楼 @xiaoj 太感谢了,虽然是些小问题,但是没搞懂的话就觉得这是个严重的问题,会觉得对之后的学习有影响,边上又没有一个能随时可以问的人,真是太感谢了,抽出时间帮我解答🙏

zujie 关闭了讨论 02月14日 11:27
zujie 关闭了讨论 02月14日 11:28
恒温 关闭了讨论 02月14日 11:39
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册