# @Time : 2021/8/1 11:36 上午
# @Author : ***
# @File : test.py
# @Software: PyCharm
#断言方法包括下面这些
#assertEqual
#assertNotEqual
#assertTrue
#assertFalse
#assertIn(item,list)
#assertNotIn(item,list)
#python还提供了提高调试效率的方法 setUp方法可以在测试类中创造一些通用的对象
#不要试图在项目早起试图编写全覆盖的测试用例
#除非有充分的理由
# @Time : 2021/8/1 11:38 上午
# @Author : ***
# @File : survey.py
# @Software: PyCharm
class AnonymousSurvey:
def __init__(self,question):
self.question=question
self.responses=[]
def show_question(self):
print(self.question)
def store_response(self,new_response):
self.responses.append(new_response)
def show_results(self):
print("Survery results:")
for response in self.responses:
print(f"-{response}")
def fun_0():#开关函数
question = "what language did you first learn to speak?"
my_survey = AnonymousSurvey(question)
my_survey.show_question()
print("enter your answers: ")
while True:
response = input(">")
if response == 'q':
break
else:
my_survey.store_response(response)
print("\nThank you for joining our survey.")
my_survey.show_results()
# @Time : 2021/8/1 2:44 下午
# @Author : ***
# @File : employee.py
# @Software: PyCharm
class Employee:
def __init__(self,first,last,salary):
self.name1=first
self.name2=last
self.salary=salary
def give_raise(self,moneyP=5000):
self.salary+=moneyP
print("ok,you get raised,now you can get %s $ a month."%(moneyP))
# @Time : 2021/8/1 2:49 下午
# @Author : ***
# @File : test_employee.py
# @Software: PyCharm
import unittest
from employee import Employee
class TestEmployee(unittest.TestCase):
def setUp(self):
self.emp=Employee('jack','dema',1000)
def test_give_default_raise(self):
self.emp.give_raise(-1000)
self.assertEqual(self.emp.salary,0)
#经过测试我们可以发现测试函数并不会真正改变我们定义好的属性的值
#而仅仅是一个测试作用
#实际上这才更符合"测试"的本意
#如果每次都改变属性,那么当测试变多时,事情将变得很麻烦
def test_give_custom_raise(self):
self.emp.give_raise(1000000)
self.assertEqual(self.emp.salary,1001000)
if __name__=='__main__':
unittest.main()
# @Time : 2021/8/1 2:21 下午
# @Author : ***
# @File : test_survey.py
# @Software: PyCharm
import unittest
from survey import AnonymousSurvey
class TestAnonymousSurvey(unittest.TestCase):
def setUp(self):#setUp的存在就是让诸多使用同一实例的测试函数都可以使用该函数内定义的"类的属性"
"""
创建一个调查对象和一组答案,供使用的测试方法使用,简化程序的编写,尤其是在测试的函数过多时
这是有意思的技巧
:return:
"""
question="******?"
self.my_survey=AnonymousSurvey(question)
self.responses=['english'.title(),'spanish'.title(),'mandarin'.title()]
def test_store_single_response(self):
# question="*****?"
# my_survey=AnonymousSurvey(question)
# my_survey.store_response('English')
#因为setUp的使用,这部分被注释掉了
self.my_survey.store_response(self.responses[0])#这个responses在setUp中进行了定义
# 故而可以直接用在类的任意地方
self.assertIn('English',self.my_survey.responses)#断言某个元素是否在列表中
def test_store_three_responses(self):
# question="******?"
# my_survey=AnonymousSurvey(question)
# responses=['english'.title(),'spanish'.title(),'mandarin'.title()]
for response in self.responses:
self.my_survey.store_response(response)
for response in self.responses:
self.assertIn(response,self.my_survey.responses)
if __name__=='__main__':
unittest.main()
|