【发布时间】:2011-02-28 04:51:58
【问题描述】:
如何生成 HTML 格式的 Python 单元测试报告。
【问题讨论】:
标签: python unit-testing
如何生成 HTML 格式的 Python 单元测试报告。
【问题讨论】:
标签: python unit-testing
Again Back with Answer...... 可以使用 HTMLTestRunner 生成报告,例如:
import random
import unittest
import HTMLTestRunner
class TestSequenceFunctions(unittest.TestCase):
def setUp(self):
self.seq = range(10)
def test_shuffle(self):
# make sure the shuffled sequence does not lose any elements
random.shuffle(self.seq)
self.seq.sort()
self.assertEqual(self.seq, range(10))
# should raise an exception for an immutable sequence
self.assertRaises(TypeError, random.shuffle, (1,2,3))
@unittest.skip("Test Skipped1")
def test_choicep(self):
element = random.choice(self.seq)
self.assertTrue(element in self.seq)
@unittest.skip("Test Skipped2")
def test_samplep(self):
with self.assertRaises(ValueError):
random.sample(self.seq, 20)
for element in random.sample(self.seq, 5):
self.assertTrue(element in self.seq)
suite = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
unittest.TextTestRunner(verbosity=2).run(suite)
outfile = open("C:\Report.html", "w")
runner = HTMLTestRunner.HTMLTestRunner(
stream=outfile,
title='Test Report',
description='This demonstrates the report output by Prasanna.Yelsangikar.'
)
runner.run(suite)
在 C:\Report.html 中获取 HTML 格式的结果,跳过需要在 HTMLTestRunner.py 文件中自定义。
【讨论】:
unittest.TextTestRunner::run 启动,第二次由HTMLTestRunner::run 启动。您应该删除行unittest.TextTestRunner(verbosity=2).run(suite)。
我喜欢使用pytest-html,因为pytest 与unittest 兼容。如果你已经定义了一个套件,你只需运行这个:
pip install pytest pytest-html
pytest -v suite.py --html=pytest_report.html --self-contained-html
【讨论】:
我不了解 HTML,但Nose 可以通过--with-xunit 选项生成 XUnit XML 报告。
【讨论】:
【讨论】:
我已将nose 与nose-html-output 插件一起使用,效果非常棒。
要安装鼻子,只需输入pip install nose
然后安装nose-html插件输入python setup.py install
最后通过键入nosetests --with-html-out 运行单元测试,包含单元测试结果的报告将存储在一个名为results.html 的文件中。
【讨论】:
result.html。所以最后我只有一个result.html。但是,我想要与我运行的鼻子测试相同数量的 html 文件。我该怎么做?
--html-out-file 选项来指定文件名。例如,尝试运行nosetests --with-html-out --html-out-file=my_results_file_name.html。希望这会有所帮助。
#!/bin/bash for f in *.py do do echo "$f" nosetests "$f" --with-html --html-file="$f".html @987654336 @这行得通..