通过网页界面执行Python单元测试
有没有办法通过网页界面来进行单元测试呢?如果可以的话,应该怎么做呢?
补充说明: 目前我想要的是测试结果...我希望这些测试能够自动化...最好是每次我修改代码的时候都能自动测试。抱歉我之前没有说清楚。
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 后,你需要为你要测试的源代码库创建一个新项目。你需要查阅手册,但简单来说:
- 在源代码管理下,你需要输入你的代码库信息,并让它定期检查代码库(我通常设置为 * * * * *,这样每分钟检查一次)。
- 添加一个实际运行测试脚本的命令(比如
python test.py
)。 - 勾选发布 JUnit 测试结果报告。如果出现类似
'TEST-*.xml' doesn't match anything
的错误,你可以放心忽略它。它看起来会像这样:
(来源: snowpeaksoftware.com)
一旦这些都完成,你就能看到 Hudson 每次运行后的测试结果。结果会像这样:
(来源: snowpeaksoftware.com)
你还会得到更详细的页面,比如这个页面:
(来源: snowpeaksoftware.com)
还有这个页面:
(来源: snowpeaksoftware.com)