python 测试代码

1、使用print()打印

测试代码最简单的就是添加一些print()语句。然而产品开发中,需要记住自己添加的所有print()语句并在最后删除,很容易出现失误。

2、使用pylint、pyflakes和pep8检查代码

这些包可以检查代码错误和代码风格问题。

  • pip install pylint
  • pip install pyflakes
style1.py:
a=1
b=2
print(a)
prnt(b)
print(c)
------------------------------
$ pylint style1.py

输出E带头为Error。

  • pip install pep8
$ pep8 style1.py

3、使用unittest测试

用于测试代码程序逻辑。

  • 确定输入对应的期望输出(断言)
  • 传入需要测试的函数,检查返回值和期望输出是否相同,可以使用assert检查。
test_cap.py:
---------------------------
import unittest
from string import capwords
def just_do_it(text):
    return text.capitalize()#换成text.title()、capwords(text)
class TestCap(unittest.TestCase):
    def setUp(self): #在每个测试方法前执行
        pass
    def tearDown(self):#在每个测试方法执行后执行
        pass
    def test_one_word(self):
        text='duck'
        result=just_do_it(text)
        self.assertEqual(result,'Duck')
    def test_multiple_words(self):
        text='a veritable flock of ducks'
        self.assertEqual(result,'A veritable Flock Of Ducks')
    def test_words_with_apostrophes(self):
        text="I'm fresh out of ideas"
        result=just_do_it(text)
        self.assertEquals(result,"I'm Fresh Out Of Ideas")
    def test_words_with_quotes(self):
        text="\"You're despicable,\" said Daffy Duck"
        result=just_do_it(text)
        self.assertEqual(result,"\"You're Despicable,\" Said Daffy Duck")
if __name__=='__main__':
    unittest.main()

4、使用doctest测试

可以把测试写到文档字符串中,也可以起到文档作用。

cap.py:
-------------------------------
def just_do_it(text):
    """
    >>>just_do_it('duck')
    'Duck'
    >>>just_do_it('a veritable flock of ducks')
    'A Veritable Flock Of Ducks'
    >>>just_do_it("I'm fresh out of ideas")
    "I'm Fresh Out Of Ideas"
    """
    from string import capwords
    return capwords(text)

if __name__=='__main__':
    import doctest
    doctest.testmod()
----------------------------------------------
$ python cap.py -v

5、使用nose测试

和unittest类似,但不需要创建一个包含测试方法的类,任何名称中带有test的函数都会被执行。

test_cap.py:
---------------------------
from nose.tools import eq_
from string import capwords
def just_do_it(text):
    return text.capitalize()#换成text.title()、capwords(text)
def test_one_word(self):
    text='duck'
    result=just_do_it(text)
    eq_(result,'Duck')
def test_multiple_words(self):
    text='a veritable flock of ducks'
    eq_(result,'A veritable Flock Of Ducks')
def test_words_with_apostrophes(self):
    text="I'm fresh out of ideas"
    result=just_do_it(text)
    eq_(result,"I'm Fresh Out Of Ideas")
def test_words_with_quotes(self):
    text="\"You're despicable,\" said Daffy Duck"
    result=just_do_it(text)
    eq_(result,"\"You're Despicable,\" Said Daffy Duck")
----------------------------------------------------
$ nosetests test_op.py

6、其他测试框架

  • tox
  • py.test

 

posted @ 2019-03-12 11:44  萌萌的美男子  阅读(994)  评论(0编辑  收藏  举报