GithubHelp home page GithubHelp logo

goversky / htmltestrunner_cn Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tungwaiyip/htmltestrunner

195.0 16.0 155.0 22.31 MB

HTMLTestRunner 汉化版,同时支持python 2和3,增加截图展示功能,失败重试

Python 100.00%
htmltestrunner python2 python3 screenshots retry unittest

htmltestrunner_cn's Introduction

HTMLTestRunner 汉化版

在原版的基础上进行扩展和改造

当年改造初衷

  • 方便自己做汉化报告生成
  • 对自己积累知识的检验
  • 挑战下单文件报告都能做出什么花样 近两年不怎么搞UI自动化了,项目就一直没怎么更新(pytest香啊😅)

todo

  • 多线程/多进程执行用例(数据统计逻辑要重新设计,还有兼容性问题😑)
  • UI 美化 (通过CDN集成一些成熟的js库~然后加5毛钱特效😜)
  • 与ddt的集成(目测基本就把源码收进来😏)

报告汉化,错误日志

selenium/appium 截图

截图功能根据测试结果,当结果为fail或error时自动截图
截图方法在_TestResult 的测试结果收集中,报告使用的截图全部保存为base64编码,避免了报告图片附件的问题,可以根据自己使用的框架不同自行调整,selenium 使用的是get_screenshot_as_base64 方法获取页面截图的base64编码
因为要提取用例中的driver变量获取webdriver对象,所以要实现截图功能必须定义在用例中定义webdriver 为driver

    def setUp(self):
        self.imgs=[]  # (可选)初始化截图列表
        self.driver = webdriver.Chrome()

或者

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()

也可以在测试过程中某一步骤自定义添加截图,比如

生成报告后会统一进行展示
Selenium截图轮播效果

Appium效果轮播截图

用例失败重试

根据unittest的运行机制,在stopTest 中判断测试结果,如果失败或出错status为1,判断是否需要重试;

在实例化HTMLTestRunner 对象时追加参数,retry,指定重试次数,如果save_last_try 为True ,一个用例仅显示最后一次测试的结果。

HTMLTestRunner(title="带截图的测试报告", description="小试牛刀", stream=open("sample_test_report.html", "wb"), verbosity=2, retry=2, save_last_try=True)

如果save_last_try 为False,则显示所有重试的结果。

HTMLTestRunner(title="带截图的测试报告", description="小试牛刀", stream=open("sample_test_report.html", "wb"), verbosity=2, retry=2, save_last_try=False)

运行中输出效果如下:

注意:在python3 中因为unittest运行机制变动,在使用setUp/tearDown中初始化/退出driver时,会出现用例执行失败没有截图的问题,所以推荐使用样例中setUpClass/tearDownClass的用法

htmltestrunner_cn's People

Contributors

goversky avatar tungwaiyip avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

htmltestrunner_cn's Issues

“饼图”位置固定,信息重叠

1.描述信息过长时,饼图会遮挡描述信息
2.在使用多进程并发执行测试用例时,同一个页面差生了多个表头的测试报告,但是饼图信息重叠。
image
3.另外,想请教一下,有没有什么方法可以将图中的测试报告数据合并

报告显示异常

新版本生成的测试报告,饼图不显示, 点击详情无法展开, 点击截图无法显示, 点击报告其它链接都没效果
用你项目的脚本执行生成的测试报告也是一样的问题
我用的是python3.7.1, 有关系?
image

另外, 代码中的'<>'会报错是不是要替换成'!='?
if isinstance(e, str):
# ue = unicode(e.encode('string_escape'))
if PY3K:
ue = e
elif e.find("Error") != -1 or e.find("Exception") <> -1:
es = e.decode('utf-8', 'ignore').split('\n')
try:
if es[-2].find("\u") <> -1 or es[-2].find('"\u') <> -1:
es[-2] = es[-2].decode('unicode_escape')
except Exception:
pass
ue = u"\n".join(es)
else:
ue = e.decode('utf-8', 'ignore')
else:
ue = e

Python3截图问题

说明文档中提到:

在python3 中因为unittest运行机制变动,在使用setUp/tearDown中初始化/退出driver时,会出现用例执行失败没有截图的问题,所以推荐使用样例中setUpClass/tearDownClass的用法

如果想在setUp/tearDown中初始化/退出driver可以截图,这个问题有什么办法解决吗?我使用setUpClass/tearDownClass的用法,当一个类里面有多个用例时,截到的图是不准确的,并不是在失败位置的截图。

bug AttributeError: 'NoneType' object has no attribute 'find'

D:\Anaconda\python.exe D:/xinjian/run_this.py
<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<testcase1.Test_ranzhi testMethod=test_case1>]>]>]>
E test_case1 (testcase1.Test_ranzhi)
Traceback (most recent call last):
File "D:/xinjian/run_this.py", line 23, in
run.run(discover)
File "D:\xinjian\common\HTMLTestRunner_jpg.py", line 746, in run
test(result)
File "D:\Anaconda\lib\unittest\suite.py", line 84, in call
return self.run(*args, **kwds)
File "D:\Anaconda\lib\unittest\suite.py", line 122, in run
test(result)
File "D:\Anaconda\lib\unittest\suite.py", line 84, in call
return self.run(*args, **kwds)
File "D:\Anaconda\lib\unittest\suite.py", line 122, in run
test(result)
File "D:\Anaconda\lib\unittest\suite.py", line 84, in call
return self.run(*args, **kwds)
File "D:\Anaconda\lib\unittest\suite.py", line 122, in run
test(result)
File "D:\Anaconda\lib\unittest\case.py", line 653, in call
retesting... 1
return self.run(*args, **kwds)
File "D:\Anaconda\lib\unittest\case.py", line 624, in run
result.stopTest(self)
File "D:\xinjian\common\HTMLTestRunner_jpg.py", line 659, in stopTest
if doc.find('_retry')!=-1:
AttributeError: 'NoneType' object has no attribute 'find'

Process finished with exit code 1

AttributeError: '_ErrorHolder' object has no attribute '_testMethodDoc'

Traceback (most recent call last):
File "D:/machine_Learning/machine_pycharm/untitled/CommonSdk/ScreenShot/Report.py", line 177, in
runer.run(suiteAll)
File "D:\machine_Learning\Lib\HTMLTestRunner_cn.py", line 888, in run
self.generateReport(test, result)
File "D:\machine_Learning\Lib\HTMLTestRunner_cn.py", line 941, in generateReport
report = self._generate_report(result)
File "D:\machine_Learning\Lib\HTMLTestRunner_cn.py", line 1011, in _generate_report
self._generate_report_test(rows, cid, tid, n, t, o, e)
File "D:\machine_Learning\Lib\HTMLTestRunner_cn.py", line 1028, in _generate_report_test
doc = t._testMethodDoc or ''
AttributeError: '_ErrorHolder' object has no attribute '_testMethodDoc'

请问,我故意给要测试的app添加的异常,然后就Pycharm控制台就输出这个bug,我不添加异常则能正常生成报告的HTML,添加了则不行请问是什么原因呢?

html报告统计总数有问题

非常感谢您分享的代码,感觉非常实用,发现一个小问题。生成的html报告,总数里面没有统计“跳过用例”,如:执行6个用例,1个错误,2个通过,3个跳过,"所有[3]"中只显示了3,照理说应该有6个,跳过的没统计上
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.