首页 文章

用Python编写单元测试:如何开始? [关闭]

提问于
浏览
490

我用Python完成了我的第一个正确的项目,现在我的任务是为它编写测试 .

由于这是我第一次做项目,这是我第一次为它编写测试 .

问题是,我该如何开始?我完全不知道 . 任何人都可以指向我一些文档/教程/链接/书籍,我可以用它来开始编写测试(我猜特别是单元测试)

任何建议都会受到欢迎 .

7 回答

  • 33

    如果您对使用单元测试不熟悉,最简单的学习方法往往是最好的 . 在此基础上,我建议使用py.test而不是the default unittest module .

    考虑这两个例子,它们做同样的事情:

    例1(unittest):

    import unittest
    
    class LearningCase(unittest.TestCase):
        def test_starting_out(self):
            self.assertEqual(1, 1)
    
    def main():
        unittest.main()
    
    if __name__ == "__main__":
        main()
    

    例2(pytest):

    def test_starting_out():
        assert 1 == 1
    

    假设两个文件都命名为 test_unittesting.py ,我们如何运行测试?

    例1(unittest):

    cd /path/to/dir/
    python test_unittesting.py
    

    例2(pytest):

    cd /path/to/dir/
    py.test
    
  • 86

    unittest 附带标准库,但我建议你 nosetests .

    “鼻子扩展了单元测试,使测试更容易 . ”

    我也建议你 pylint

    “分析Python源代码,寻找质量低劣的错误和迹象 . ”

  • 32

    免费的Python书Dive Into Python有一个chapter on unit testing,你可能会发现它很有用 .

    如果您遵循现代实践,您应该在编写项目时编写测试,而不是等到项目快完成 .

    现在迟到了,但现在你知道下次了 . :)

  • 3

    unittest的文档将是一个很好的起点 .

    此外,现在有点晚了,但是将来请考虑在项目本身之前或期间编写单元测试 . 这样你可以使用它们进行测试,并且(理论上)你可以将它们用作回归测试,以验证你的代码更改没有破坏任何现有代码 . 这将为您提供编写测试用例的全部好处:)

  • 8

    正如其他人已经回复的那样,编写单元测试已经晚了,但也不算太晚 . 问题是您的代码是否为 testable . 实际上,要对现有代码进行测试并不容易,甚至还有一本关于此的书:Working Effectively with Legacy Code(参见key pointsprecursor PDF) .

    现在编写单元测试或不是你的电话 . 你只需要意识到这可能是一项乏味的任务 . 您可以解决此问题以学习单元测试或首先考虑编写接受(端到端)测试,并在更改代码或向项目添加新功能时开始编写单元测试 .

  • 70

    在我看来,有三个很棒的python测试框架,很适合检查 .
    unittest - 模块标配所有python发行版
    nose - 可以运行单元测试,并且具有较少的样板 .
    pytest - 还运行单元测试,具有较少的样板,更好的报告,许多很酷的额外功能

    为了更好地比较所有这些,请阅读http://pythontesting.net/start-here中每个的介绍 .
    还有关于灯具的扩展文章,还有更多 .

  • 27

    nosetests是在python中进行单元测试的绝佳解决方案 . 它支持基于单元测试的测试用例和doctests,并且只需简单的配置文件即可开始使用它 .

相关问题