美文网首页
2022-07-30 Python学习笔记18

2022-07-30 Python学习笔记18

作者: 中年大叔 | 来源:发表于2022-08-07 22:06 被阅读0次

一、总体计划:

开始时间:2022-07-13

计划完成时间:2022-08-12

计划每日完成量:15页/天,或0.7章/天

二、今日(2022-07-30)学习进度:

今日已学习28页,完成1章,日任务达标。

总体进度381页/460页,18章/20章。

三、学习笔记:

1、使用json.dump() 和json.load(),函数json.dump() 接受两个实参:要存储的数据以及可用于存储数据的文件对象。

import json
numbers = [2, 3, 5, 7, 11, 13]
filename = 'numbers.json'
with open(filename, 'w') as f_obj:
    json.dump(numbers, f_obj)

使用函数json.load() 读取文件到内存中。

import json
filename = 'numbers.json'
with open(filename) as f_obj:
    numbers = json.load(f_obj)
print(numbers)

输出结果:
[2, 3, 5, 7, 11, 13]

2、单元测试和测试用例,Python标准库中的模块unittest 提供了代码测试工具。单元测试用于核实函数的某个方面没有问题;测试用例是一组单元测试,这些单元测试一起核实函数在各种情形下的行为都符合要求。良好的测试用例考虑到了函数可能收到的各种输入,包含针对所有这些情形的测试。全覆盖式测试全覆盖式测试 用例包含一整套单元测试,涵盖了各种可能的函数使用方式。对于大型项目,要实现全覆盖可能很难。通常,最初只要针对代码的重要行为编写测试即可,等项目被广泛使用时再考虑全覆盖。

3、可通过的测试,创建测试用例的语法需要一段时间才能习惯,但测试用例创建后,再添加针对函数的单元测试就很简单了。要为函数编写测试用例,可先导入模块unittest 以及要测试的函数,再创建一个继承unittest.TestCase 的类,并编写一系列方法对函数行为的不同方面进行测试。

import unittest
from name_function import get_formatted_name
class NamesTestCase(unittest.TestCase):
      """测试name_function.py"""
      def test_first_last_name(self):
          """能够正确地处理像Janis Joplin这样的姓名吗?"""
          formatted_name = get_formatted_name('janis', 'joplin')
          self.assertEqual(formatted_name, 'Janis Joplin')
unittest.main()

4、方法setUp(),unittest.TestCase 类包含方法setUp() ,让我们只需创建这些对象一次,并在每个测试方法中使用它们。如果你在TestCase 类中包含了方法setUp() ,Python将先运行它,再运行各个以test_打头的方法。这样,在你编写的每个测试方法中都可使用在方法setUp() 中创建的对象了。

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() 让测试方法编写起来更容易:可在setUp() 方法中创建一系列实例并设置它们的属性,再在测试方法中直接使用这些实例。相比于在每个测试方法中都创建实例并设置其属性,这要容易得多。

相关文章

网友评论

      本文标题:2022-07-30 Python学习笔记18

      本文链接:https://www.haomeiwen.com/subject/jrccwrtx.html