通过网页界面执行Python单元测试

7 投票
2 回答
4627 浏览
提问于 2025-04-15 23:08

有没有办法通过网页界面来进行单元测试呢?如果可以的话,应该怎么做呢?

补充说明: 目前我想要的是测试结果...我希望这些测试能够自动化...最好是每次我修改代码的时候都能自动测试。抱歉我之前没有说清楚。

2 个回答

4

你可以使用Hudson来安排测试在你提交代码时自动运行。因为Hudson是一个网页应用,所以你可以通过网页查看测试结果(也可以把结果发布出去,或者发邮件给你或你的团队)。

8

编辑:

这个回答现在有点过时了:

  • 请使用 Jenkins,而不是 Hudson(其实是同一个东西,只是换了个名字)。
  • 请使用 django-jenkins,而不是 xmlrunner.py。

链接到 django-jenkins 的地方有一个很好的教程,教你如何将 Jenkins 和 Django 一起使用。我会保留下面的文字,因为里面还有一些不错的信息。


正如 Bryan 所说,我会使用 Hudson 来安排、运行和收集测试结果。你可以修改你的测试,使用 xmlrunner.py(这是 Sebastian Rittau 写的),它会把你的测试结果输出成一个 Hudson 可以识别的 JUnit 兼容的 XML 文件。

下面是一个使用 xmlrunner 的测试代码示例:

import unittest
import xmlrunner

class TheTest(unittest.TestCase):

    def testOne(self):
        self.assertEquals(1, 1)
    def testTwo(self):
        self.assertEquals(2, 2)
    def testThree(self):
        self.assertEquals(3, 4)

if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(TheTest)
    xmlrunner.XMLTestRunner().run(suite)

安装好 Hudson 后,你需要为你要测试的源代码库创建一个新项目。你需要查阅手册,但简单来说:

  1. 在源代码管理下,你需要输入你的代码库信息,并让它定期检查代码库(我通常设置为 * * * * *,这样每分钟检查一次)。
  2. 添加一个实际运行测试脚本的命令(比如 python test.py)。
  3. 勾选发布 JUnit 测试结果报告。如果出现类似 'TEST-*.xml' doesn't match anything 的错误,你可以放心忽略它。它看起来会像这样: JUnit 设置
    (来源: snowpeaksoftware.com)

一旦这些都完成,你就能看到 Hudson 每次运行后的测试结果。结果会像这样:

Hudson 单元测试结果
(来源: snowpeaksoftware.com)

你还会得到更详细的页面,比如这个页面:

Hudson 单元测试详细结果
(来源: snowpeaksoftware.com)

还有这个页面:

Hudson 单元测试详细结果
(来源: snowpeaksoftware.com)

撰写回答