zoukankan      html  css  js  c++  java
  • python单元测试

    假如你的项目里有这样一个文件mylib.py,文件里写了很多个方法供外面的人调用

    def add(x,y):
        return x+y
    
    def division(x,y):
        return x/y
    
    def mutiply(x,y):
        return x*y
    
    def subtract(x,y):
        return x-y
    
    def main():
        pass
    
    if __name__ == '__main__':
        main()

    那么我们要怎么编写单元测试代码来验证这些方法的正确性?

    请看下面的文件testadd.py (文件名必须以test开头)

    import mylib
    import unittest
    
    class TestCase(unittest.TestCase):
        def test_add(self):
            self.assertEqual(mylib.add(2,3),5)
    
    def main():
        unittest.main()
    
    if __name__ == '__main__':
        main()

    其中类名TestCase可以随便取,但是方法名test_add必须以test开头,这样在运行testadd.py的时候程序才知道要运行这个方法。

    运行结果如下:

    $ python testadd.py
    .
    ----------------------------------------------------------------------
    Ran 1 test in 14.564s
    
    OK

    如果我们还有另外i啊一个文件testsub.py

    import unittest
    import arithmetic
    
    
    class MyTest(unittest.TestCase):
        def test_sub(self):
            self.assertEqual(arithmetic.subtract(4,2),1)
    
    def main():
        unittest.main()
    
    if __name__ == '__main__':
        main()

    而我们想要把testadd.py和testsub.py一起运行的话只要执行这个命令就可以了

    python -m unittest discover

    unittest 将递归地查找当前目录下匹配test*.py的文件,并将其中的unittest.TestCase的所有子类都实例化,然后调用相应的测试方法进行测试。

  • 相关阅读:
    krdoc 工程
    在ubuntu16.04 上安装php5.6.30
    https自签名 证书签发
    websocket 实现 前端vue-socket.io 服务端 koa2(socket.io)
    工作杂项 0528未 整理
    python 创建django项目;
    关于conda,pip使用杂项:
    笔记 日常
    ubuntu 16.04下 django 1.11.1项目启动问题(kr_doc)
    react-native如何看待 this.setState()
  • 原文地址:https://www.cnblogs.com/streakingBird/p/4059596.html
Copyright © 2011-2022 走看看