python学习(十一) 测试代码

2019-10-19  本文已影响0人  August________

测试代码

测试函数

def get_formatted_name(first,last):
    """Generate a neatly formatted full name."""
    full_name = first + ' ' + last
    return full_name.title()

from name_function import get_formatted_name
print("Enter 'q' at any time quit.")
while True:
    first = input("\nPlease give me a first name: ")
    if first == 'q':
        break
    last = input("\nPlease give me a last name: ")
    if last == 'q':
        break

    formatted_name = get_formatted_name(first,last)
    print("Neatly formatted name: " + formatted_name + '.')
    
    
Enter 'q' at any time quit.

Please give me a first name: 小黑

Please give me a last name: 蛋
Neatly formatted name: 小黑 蛋.

Please give me a first name: q

***Repl Closed***

单元测试和测试用例

可通过的测试

import unittest
from name_function import get_formatted_name

class NameTestCase(unittest.TestCase):
    """测试name_function.py"""

    def test_first_last_name(self):
        """能够正确处理像Jains Joplin"""

        formatted_name = get_formatted_name('janis','Joplin')
        self.assertEqual(formatted_name,'Janis Joplin')

unittest.main()


.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
[Finished in 0.2s]

不能通过的测试。

def get_formatted_name(first,middle,last):
    """Generate a neatly formatted full name."""
    full_name = first + ' ' + middle + ' ' + last
    return full_name.title()
import unittest
from name_function import get_formatted_name

class NameTestCase(unittest.TestCase):
    """测试name_function.py"""

    def test_first_last_name(self):
        """能够正确处理像Jains Joplin"""

        formatted_name = get_formatted_name('janis','Joplin')
        self.assertEqual(formatted_name,'Janis Joplin') 
unittest.main()


E
======================================================================
ERROR: test_first_last_name (__main__.NameTestCase)
能够正确处理像Jains Joplin
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:\学习笔记\python学习笔记\第十一章\test_name_function.py", line 10, in test_first_last_name
    formatted_name = get_formatted_name('janis','Joplin')
TypeError: get_formatted_name() missing 1 required positional argument: 'last'

----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (errors=1)
[Finished in 0.1s with exit code 1]

测试为通过时怎么办

def get_formatted_name(first,last,middle=''):
    """Generate a neatly formatted full name."""
    if middle:
        full_name = first + ' ' + middle + ' ' + last
    else:
        full_name = first + ' ' + last 
    return full_name.title()


import unittest
from name_function import get_formatted_name

class NameTestCase(unittest.TestCase):
    """测试name_function.py"""

    def test_first_last_name(self):
        """能够正确处理像Jains Joplin"""

        formatted_name = get_formatted_name('janis','Joplin')
        self.assertEqual(formatted_name,'Janis Joplin') 
unittest.main()

添加新测试。

import unittest
from name_function import get_formatted_name

class NameTestCase(unittest.TestCase):
    """测试name_function.py"""

    def test_first_last_name(self):
        """能够正确处理像Jains Joplin"""

        formatted_name = get_formatted_name('janis','Joplin')
        self.assertEqual(formatted_name,'Janis Joplin') 

    def test_first_last_middle_name(self):
        formatted_name = get_formatted_name('J','Q','K')
        self.assertEqual(formatted_name,'J K Q')
unittest.main()

..
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK
[Finished in 0.1s]

测试类

各种断言方法

方法 用途
self.assertEqual(a,b) 核实a == b
self.assertNotEqual(a,b) 核实 a != b
self.assertTrue(x) 核实x 为Ture
self.assertFalse(x) 核实x为False
self.assertIn(item,list) 核实item在list中
self.assertNotIn(item,list) 核实item不在list中

一个要测试的类

class anonymousSurvey():
    """收集匿名调查的答案"""
    def __init__(self,question):
        self.question = question
        self.responses = []

    def show_question(self):
        """显示调查问卷"""
        print(self.question)

    def store_responses(self,new_responses):
        """存储单份调查答卷"""
        self.responses.append(new_responses)

    def show_results(self):
        """显示收集到的所有答案"""
        print("Survey results: ")
        for response in self.responses:
            print('-' + response)
from survey import AnonymousSurvey

question = "What language did you first learn to speak?"
my_survey = AnonymousSurvey(question)

my_survey.show_question()
print("Enter 'q' at any time to quit.\n ")
while  True:
    response = input("language: ")
    if response == 'q':
        break
    my_survey.store_responses(response)

print("\nThank you to everyone who participated in the survey!")
my_survey.show_results()

What language did you first learn to speak?
Enter 'q' at any time to quit.
 
language: English
language: chinses
language: chinese
language: English
language: q

Thank you to everyone who participated in the survey!
Survey results: 
-English
-chinses
-chinese
-English

***Repl Closed***

测试AnonymousSurvey类

import unittest
from survey import AnonymousSurvey
class  TestAnonymousSurvey(unittest.TestCase):
    """针对AnonymousSurvey类的测试"""
    def test_store_single_response(self):
        """测试单个答案是否会被存储"""
        question = "What language fif you first learn to speak?"
        my_survey = AnonymousSurvey(question)
        my_survey.store_responses("chinese")
        self.assertIn('chinese',my_survey.responses)

unittest.main()

.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
[Finished in 0.2s]
import unittest
from survey import AnonymousSurvey
class  TestAnonymousSurvey(unittest.TestCase):
    """针对AnonymousSurvey类的测试"""
    def test_store_single_response(self):
        """测试单个答案是否会被存储"""
        question = "What language fif you first learn to speak?"
        my_survey = AnonymousSurvey(question)
        my_survey.store_response("chinese")
        self.assertIn('chinese',my_survey.responses)

    def test_store_three_responses(self):
        question = "What language fif you first learn to speak?"
        my_survey = AnonymousSurvey(question)
        responses = ["English","chinese","Japanese"]
        
        for response in responses:
            my_survey.store_response(response)

        for response in responses:
            self.assertIn(response,my_survey.responses)


unittest.main()

..
----------------------------------------------------------------------
Ran 2 tests in 0.001s

OK
[Finished in 0.5s]

方法setUP()

import unittest
from survey import AnonymousSurvey
class  TestAnonymousSurvey(unittest.TestCase):
    """针对AnonymousSurvey类的测试"""
    def setUp(self):
        question = "What language fif you first learn to speak?"
        self.my_survey = AnonymousSurvey(question)
        self.responses = ["English","chinese","Japanese"]

    def test_store_single_response(self):
        """测试单个答案是否会被存储"""
        self.my_survey.store_response(self.responses[0])
        self.assertIn(self.responses[0],self.my_survey.responses)
    def test_store_three_responses(self):
        
        for response in self.responses:
            self.my_survey.store_response(response)

        for response in self.responses:
            self.assertIn(response,self.my_survey.responses)


unittest.main()


..
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK
[Finished in 0.4s]

小结

上一篇 下一篇

猜你喜欢

热点阅读