Python初学者手册(14)

python初学者日记

1.存储数据:json用法
json.jump()用来存储数字列表,接受两个实参:要存储的数据以及可用于存储数据的文件对象。
json.load()将这个列表读取到内存中。
例子1:
import json
numbers = [2, 3, 5, 7, 11, 13]
filename = ‘numbers.json’ #通常使用文件扩展名.json来指出文件存储的数据为JSON格式
with open(filename, ‘w’) as f_obj:
json.dump(numbers, f_obj) #此处有缩进。使用函数json.dump() 将数字列表存储到文件numbers.json中
例子2:
import json
filename = ‘numbers.json’
with open(filename) as f_obj:
numbers = json.load(f_obj)
print(numbers)
2.
代码的重构:
将代码划分为 一系列完成具体工作的函数。这样的过程被称为重构。重构让代码更清晰、更易于理解、更容 易扩展。
3.
要为函数编写测试用例,可先导入模块unittest以及要测试的函数,再创建一个继承unittest.TestCase的类,并编写一系列方法对函数行为的不同方面进行测试。 (Python标准库中的模块unittest提供了代码测试工具)
例子:

import unittest 
from name_function import get_formatted_name 
 
class NamesTestCase(unittest.TestCase):     
"""创建 了一个名为NamesTestCase的类,用于包含一系列针对
   get_formatted_name()的单元测试""" 
   #这个类必须继承 unittest.TestCase类,这样Python才知道如何运行你
   #编写的测试         
   def test_first_last_name(self):      
   #方法名必须以test_打头,这样它才 会在我们运行test_name_function.py
   #时自动运行                     
      formatted_name = get_formatted_name('janis', 'joplin')          
      self.assertEqual(formatted_name, 'Janis Joplin') 
 #unittest类最有用的功能之一:一个断言方法。断言方法用来核实得到 
 #的结果是否与期望的结果一致。assertEqual()
unittest.main() 

测试类6个常用的断言方法。

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

检测类:

import unittest 
from survey import AnonymousSurvey 
 
class TestAnonmyousSurvey(unittest.TestCase): 
    """针对AnonymousSurvey类的测试"""      
     def test_store_single_response(self):      
        """测试单个答案会被妥善地存储"""        
       question = "What language did you first learn to speak?"         
       my_survey = AnonymousSurvey(question)         
       my_survey.store_response('English')                   
       self.assertIn('English', my_survey.responses) 
 
unittest.main()  
 

方法setUp()
在前面的test_survey.py中,我们在每个测试方法中都创建了一个AnonymousSurvey实例,并在 每个方法中都创建了答案。unittest.TestCase类包含方法setUp(),让我们只需创建这些对象一 次,并在每个测试方法中使用它们。如果你在TestCase类中包含了方法setUp(),Python将先运行 它,再运行各个以test_打头的方法。

import unittest 
from survey import AnonymousSurvey 
class TestAnonymousSurvey(unittest.TestCase):    
 """针对AnonymousSurvey类的测试"""        
   def setUp(self):        
  # 创建一个调查对象和一组答案,供使用的测试方法使用                 
    question = "What language did you first learn to speak?" 
    self.my_survey = AnonymousSurvey(question)          
    self.responses = ['English', 'Spanish', 'Mandarin'] 
    
    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() 
 

方法setUp()做了两件事情:创建一个调查对象;创建一个答案列表

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页