【问题标题】:Python Unittest Reporting in HTMLHTML 中的 Python 单元测试报告
【发布时间】:2011-02-28 04:51:58
【问题描述】:

如何生成 HTML 格式的 Python 单元测试报告。

【问题讨论】:

    标签: python unit-testing


    【解决方案1】:

    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 文件中自定义。

    【讨论】:

    • 在此代码中,您的测试将运行 2 次​​b>。第一次将由unittest.TextTestRunner::run 启动,第二次由HTMLTestRunner::run 启动。您应该删除行unittest.TextTestRunner(verbosity=2).run(suite)
    【解决方案2】:

    我喜欢使用pytest-html,因为pytestunittest 兼容。如果你已经定义了一个套件,你只需运行这个:

    pip install pytest pytest-html
    pytest -v suite.py --html=pytest_report.html --self-contained-html
    

    【讨论】:

      【解决方案3】:

      我不了解 HTML,但Nose 可以通过--with-xunit 选项生成 XUnit XML 报告。

      【讨论】:

      • 在某种程度上我得到了解决方案 python 单元测试 Nose Html 报告生成。直到一天结束,我想我会得到解决方案。谢谢大家的支持....
      • 我的问题的答案是转到链接testoob.sourceforge.net/features.html,在这个链接中,我使用 testoob 工具生成了 XML / HTML 格式的 python 单元测试报告,但是我生成了 XML 格式,但是一旦我遇到了 HTML得到这个答案我会发布......
      • @prasanna.yelsangika:那么请在此处发布您自己问题的答案,并将其标记为已接受。
      • Python 单元测试报告可以通过 2 种方式轻松生成 1. Testoob :在命令提示符 python Python_File_name --xml/html= file_Path 2.HTMLTestRunner :包含 HTMLTestRunner.py 并添加这些行代码:outfile = open("C:\Report.html", "w") runner = HTMLTestRunner.HTMLTestRunner(stream=outfile, title='Test Report', description='这演示了HTMLTestRunner输出的报告。') runner.run(testshuffle )
      【解决方案4】:

      什么样的报告?我假设你的意思是覆盖率,因为如果你有不止一个失败的单元测试你做错了。

      看看Nose

      nosetests --with-coverage --cover-html
      

      【讨论】:

      • 只有HTML格式的通过、失败、跳过和错误报告,没有代码覆盖率报告
      • 我想要这种格式,请到这个链接,tungwaiyip.info/software/sample_test_report.html
      • 或许你想自己先仔细看一看,这个报告明显是tungwaiyip.info/software/HTMLTestRunner.html生成的
      • @prasanna.yelsangika:我有个主意。如果您想生成与HTMLTestRunner 完全相同的报告,请尝试使用名为HTMLTestRunner 的产品(正如@pynator 建议的几个cmets)!希望这可以帮助。祝你有美好的一天。
      • @prasanna.yelsangika:我给了你 HTMLTestRunner 项目页面的链接。阅读赞赏 - 请睁大你的眼睛!
      【解决方案5】:

      我已将nosenose-html-output 插件一起使用,效果非常棒。

      要安装鼻子,只需输入pip install nose

      然后安装nose-html插件输入python setup.py install

      最后通过键入nosetests --with-html-out 运行单元测试,包含单元测试结果的报告将存储在一个名为results.html 的文件中。

      【讨论】:

      • 这并没有真正解决核心问题 - 它使用完全不同的解决方案来回答问题..
      • 该解决方案生成 HTML 格式的 python 单元测试报告。我不明白它与问题无关
      • @melqkiades 我们是否可以选择更改生成的报告的名称。如果我要运行多个鼻子测试,那么每次都会创建result.html。所以最后我只有一个result.html。但是,我想要与我运行的鼻子测试相同数量的 html 文件。我该怎么做?
      • @Karthik 您可以使用--html-out-file 选项来指定文件名。例如,尝试运行nosetests --with-html-out --html-out-file=my_results_file_name.html。希望这会有所帮助。
      • 我会试试的.. 同时,我创建了一个 bash 脚本来运行所有文件并为每个文件创建报告.. #!/bin/bash for f in *.py do do echo "$f" nosetests "$f" --with-html --html-file="$f".html @987654336 @这行得通..
      猜你喜欢
      • 2019-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多