python-30-零基础自学python-如何用代码测试你的代码?

学习内容:《python编程:从入门到实践》第二版

知识点:测试,unittest,如何编写测试的代码。

练习内容:

练习11-1:城市和国家 编写一个函数,它接受两个形参:一个城市名和一个国家名。这个函数返回一个格式为City,Country的字符串,如Santiago,Chile。将这个函数存储在一个名为city_functions.py的模块中。创建一个名为test_cities.py的程序,对刚才编写的函数进行测试(别忘了,需要导入模块unittest和要测试的函数)。编写一个名为test_city_country()的方法,核实使用类似于'santiago'和'chile'这样的值来调用前述函数时,得到的字符串是正确的。运行test_cities.py,确认测试test_city_country()通过了。

我的代码&运行结果:

city_functions.py 
这是需要测试的代码,目前的练习是为了熟悉,所以用了比较简单的代码
def get_city_functions(city,country):
    city_functions = f"{city.title()},{country.title()}"
    return city_functions
test_cities.py

这是测试函数的代码,也就是用下面的测试代码,对上面的函数代码进行测试,看上面的代码对不对

import unittest
from city_functions import get_city_functions

class CityfunctionsTestCase(unittest.TestCase):
    def test_city_country(self):
        city_functions = get_city_functions('santiago','chile')
        self.assertEqual(city_functions,'Santiago,Chile')
if __name__ =='__main__':
    unittest.main()

运行结果:

 

 import引入unittest,才会开始测试

from 需要测试的代码 import 引入要测试的部分

class 类 testcase 案例测试

def测试方法设置:目前的案例测试,方法就是确认是否一致,用的是self.assertEqual(),

这是unittest类最有用的功能之一:断言方法。断言方法核实得到的结果是否与期望的结果一致。

if判断一致,这个部分还不理解,书中介绍如下:

练习11-2:人口数量 修改前面的函数,加上第三个必不可少的形参population,并返回一个格式为City,Country – population xxx的字符串,如Santiago,Chile –population 5000000。运行test_cities.py,确认测试test_city_country()未通过。修改上述函数,将形参population设置为可选的。再次运行test_cities.py,确认测试test_city_country()又通过了。再编写一个名为test_city_country_population()的测试,核实可以使用类似于'santiago'、'chile'和'population=5000000'这样的值来调用这个函数。再次运行test_cities.py,确认测试test_city_country_population()通过了。

按题目步骤来

  • 修改函数如下:
def get_city_functions(city,country,population):
    city_functions = f"{city.title()},{country.title()} - population {population}"
    return city_functions
  • 运行未通过:

  • 修改函数,population为可选,设置可选时要注意↓

1.if else的用法

2.population位置必须在最后,且要写清楚,population = ‘’,

如果population后没有写=‘’,那么还是会报错。 

修改后代码↓

def get_city_functions(city,country,population=''):
    if population:
        city_functions = f"{city.title()},{country.title()} - population {population}"
    else:
        city_functions = f"{city.title()},{country.title()}"
    return city_functions

确认测试通过↓ 

 

继续修改测试代码,注意self.assertEqual(city_functions,'Santiago,Chile,5000000')

这个部分应该要与输出实际一样,否则报错,下面这个代码错了

import unittest
from city_functions import get_city_functions

class CityTestCase(unittest.TestCase):
    def test_city_country_population(self):
        city_functions = get_city_functions('santiago','chile','population=5000000')
        self.assertEqual(city_functions,'Santiago,Chile,5000000')

    if __name__ == '__main__':
        unittest.main()

根据报错修改代码:错误处见↓

import unittest
from city_functions import get_city_functions

class CityTestCase(unittest.TestCase):
    def test_city_country_population(self):
        city_functions = get_city_functions('santiago','chile','5000000')
        #5000000这里是要测试的实参,不需要再写population
        self.assertEqual(city_functions,'Santiago,Chile - population 5000000')
         #这里是希望最后呈现的样子,修改了写法为- population 5000000,改后就可以比较了

    if __name__ == '__main__':
        unittest.main()

运行结果:

总结&问题:

1.测试代码的学习感觉又是一个新的内容,新的模块用法。对代码的基础学习可能是记住这些不同代码块是怎么调用的。先记住,先模仿着用,再去慢慢理解消化。

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值