Python编程:从入门到实践--十到十一章

Python编程:从入门到实践

  • 1 文件和异常 (第十章)
    • 1.1 读取数据
      • 1.1.1 读取整个文件
      • 1.1.2 创建一个包含所有行的列表
    • 1.2 写入数据
    • 1.3 异常
  • 2 测试代码 (第十一章)
    • 2.1 测试函数
    • 2.2 测试类

1 文件和异常 (第十章)

1.1 读取数据

1.1.1 读取整个文件

with open('文件名') as 某某来打开,不需要考虑关闭

若用open('文件名'),则还需考虑何时close(‘文件名’)

逐行读取方法:for line in 某某: \n\t print(line)

1.1.2 创建一个包含所有行的列表

这是text文件:

3.1415926
  535897
  932384

以下是代码:

filename = 'pi_digits.txt'
with open(filename) as file_object:
     lines = file_object.readlines()

for line in lines:
    print(line.rstrip())

以下是运行效果:

3.1415926
  535897
  932384

1.2 写入数据

1.3 异常

try-except-else

详略

2 测试代码 (第十一章)

2.1 测试函数

例:

待测试代码:
文件1:name_function.py

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

文件2:names.py

from name_function import get_formatted_name

print("Enter 'q' at any time to quit.")
while True:
    first = input("\nPlease give me a first name: ")    
    if first == 'q':    
        break    
    last = input("Please give me a last name: ")    
    if last == 'q':    
        break    
    formatted_name = get_formatted_name(first, last)    
    print("\tNeatly formatted name: " + formatted_name + '.')

以下是测试代码:

import unittest    # 导入了模块unittest
from name_function import get_formatted_name    # 创建类,必须继承 unittest.TestCase 类

class NamesTestCase(unittest.TestCase):
    """测试name_function.py"""        
    def test_first_last_name(self):    # 以 test_ 打头的方法都将自动运行
        """能够正确地处理像Janis Joplin这样的姓名吗?"""        
        formatted_name = get_formatted_name('janis', 'joplin')                     
        self.assertEqual(formatted_name, 'Janis Joplin')    # 一个断言方法。断言方法用来核实得到的结果是否与期望的结果一致
        
unittest.main()

以下是运行效果(测试正确):

.  # 句点表明有一个测试通过了
----------------------------------------------------------------------
Ran 1 test in 0.000s    # Python运行了一个测试,消耗的时间不到0.001秒
OK    # OK 表示所有测试都通过了

以下是另一个测试的运行效果(测试错误)(待测试代码及测试代码略):


E
====================================================================== 
ERROR: test_first_last_name (__main__.NamesTestCase)
---------------------------------------------------------------------- 
Traceback (most recent call last):
File "test_name_function.py", line 8, 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)

2.2 测试类

注:一些断言方法(只能在继承 unittest.TestCase 的类中使用这些方法,)

方法 用途
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 里面

测试类与测试函数类似

方法setUp()(没看懂)暂略

你可能感兴趣的:(python自习,python)